求助高手一个关于异步IO与多线程的问题
以前的理解
所谓异步IO是必须依靠多线程才能实现的
,打个比方:主线程在按顺序执行代码时,遇到耗时长的IO操作
时,主线程会马上生成一个子线程来负责耗时长的IO操作
,而主线程自己只委派而不亲自处理,而且这样主线程就不会阻塞,马上继续执行余下代码。
问题
现在通过度娘查找后,发现我之前的理解好像不正确,求各位大神解答下,我是个PHP新手,下面是我现在的理解,如果不对请马上指出,谢谢
现在理解
因为多线程多进程之间切换会导致CPU切换消耗大量资源,所以才产生异步IO,这是不是说明异步IO不是依靠多线程实现的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过大神指点后,对“多线程与异步”有了一个深刻的认真,原来我以前的理解是错误的,其实
多线程和异步是2种不同的东西
,它们之间没有任何关系
,但它们的共同点是可以提高程序的执行效率,从而达到高并发的效果。异步其实是靠硬件来实现的
而多线程是靠系统来实现的
阻塞非阻塞 与 同步异步 是不是有关系?
我们一般说:
“同步”
都会带上“阻塞”
——同步阻塞
“异步”
都会带上“非阻塞”
——异步非阻塞
但实际上
同步与阻塞
异步与非阻塞
根本没有半点关系阻塞非阻塞说的是程序的一种状态
而同步异步说的是一种工作方式
https://segmentfault.com/n/13... 这是我一篇笔记,可以参考参考,是个白话故事形式的讲解,我觉得挺生动的,希望帮到你