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数据完成后,通知用户空间数据准备完成,这时,用户进程再去接收数据。
同步:关注的是整体,如果整体上需要等待完成,即是同步的。