同步与阻塞,异步与非阻塞的区别(转)

Posted olivertian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同步与阻塞,异步与非阻塞的区别(转)相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/-900401/p/4015048.html

 

很受益的一篇文章,特别是后面对四种模型的解析。

理解阻塞和非阻塞,同步异步,有一个核心点要搞清楚就是用户发起内核调用的时候,内核处理分两个阶段:一是准备数据,二是把数据拷贝到用户态内存。

 

可以近似把内核处理IO操作和用户态线程执行看成是并行(近似看成并行,而不是并发,好理解一些),所以在非阻塞情况下,内核准备数据期间不会影响用户态线程的执行的。

在进行I/O操作的时候,是将任务交给DMA来处理,请求发出后CPU就不管了,在DMA处理完后通过中断通知CPU处理完成了。I/O操作消耗的cpu时间很少。(https://blog.csdn.net/qq_22660775/article/details/88966832)

以上是关于同步与阻塞,异步与非阻塞的区别(转)的主要内容,如果未能解决你的问题,请参考以下文章

同步与异步,阻塞与非阻塞的区别

同步与异步,阻塞与非阻塞的区别,以及select,poll和epoll

(转)异步与非阻塞之间的区别(看到的最清晰的说明)

Java 同步与异步-阻塞与非阻塞理解

IO中同步异步与阻塞非阻塞的区别(转)

转:聊聊同步异步阻塞与非阻塞