同步异步的理解 (async/await)
2018-10-30 17:09
253 查看
近期在工作中使用同步异步方法,出现bug,感觉以前对于同步异步,阻塞非阻塞理解的有问题,于是在网上重新学习
找到以下的回答
同步:执行一个操作之后,等待结果,然后才继续执行后续的操作。
异步:执行一个操作后,可以去执行其他的操作,然后等待通知再回来执行刚才没执行完的操作。
阻塞:进程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。
非阻塞:进程给CPU传达任我后,继续处理后续的操作,隔断时间再来询问之前的操作是否完成。这样的过程其实也叫轮询。
阻塞、非阻塞、多路IO复用,都是同步IO,异步必定是非阻塞的,所以不存在异步阻塞和异步非阻塞的说法。真正的异步IO需要CPU的深度参与。换句话说,只有用户线程在操作IO的时候根本不去考虑IO的执行全部都交给CPU去完成,而自己只等待一个完成信号的时候,才是真正的异步IO。所以,拉一个子线程去轮询、去死循环,或者使用select、poll、epool,都不是异步。
参考网址:https://www.geek-share.com/detail/2687546000.html
作者参考网址:
https://www.zhihu.com/question/19732473
https://www.zhihu.com/question/27965282
http://www.smithfox.com/?e=191
https://zhuanlan.zhihu.com/p/21416728
https://www.geek-share.com/detail/2662968021.html
相关文章推荐
- 理解 ES7 之 async + await 同步 / 异步方案 以及 async / await 的前世今生
- 理解async和await 和其他异步操作
- 深入理解 JavaScript 异步系列(5)—— async await
- async await 同步方法调用异步方法死锁
- 理解异步之美:Promise与async await(一)
- 深入理解 JavaScript 异步系列(5)—— async await
- 使用async和await将同步方法包装成异步方法
- [完结篇] - 理解异步之美 --- promise与async await (三)
- 利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
- jQuery的ajax async同步和异步的理解
- Promise,同步异步,Async/await
- 使用Promise和async-await实现的一个异步遍历+同步执行任务的实例
- NodeJS-Promise、await、async异步变同步
- 深入理解AJAX系列第三篇--async属性值之同步和异步及同步和异步区别
- 理解异步之美:Promise 与 async await(二)
- 微信小程序中使用Async-await方法异步请求变为同步请求方法
- ES7之async/await 同步还是异步
- ES7前端异步玩法:async/await理解
- SOCKET同步与异步的理解
- ASP.NET WebForm中用async/await实现异步出人意料的简单