同步异步阻塞非阻塞理解

https://blog.csdn.net/jiaxiaokai/article/details/76269856

阻塞(block):从用户空间recvfrom(等待接收)  system call bernel(内核) ->bernel wait from data ->bernel copy data user space -> 全路程阻塞。

非阻塞(non-block):从用户空间recvform(等待接收) systm call bernel(内核),如果数据没有准备好,内核马上返回,用户通过不断check,去判断内核数据是否准备好,准备完成后,内核拷贝数据到用户空间,这里是block的。不断轮询的方式会导致大量cpu的消耗。

异步:当用户空间recvform system call bernel后就不再等待,知道内核准备完成数据,并copy数据完成后,通知用户空间数据准备完成,这时,用户进程再去接收数据。

同步:关注的是整体,如果整体上需要等待完成,即是同步的。

https://www.cnblogs.com/cainingning/p/9556642.html

原文地址:https://www.cnblogs.com/keepMoveForevery/p/10593277.html