阻塞和非阻塞同步和异步
Posted samuel1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻塞和非阻塞同步和异步相关的知识,希望对你有一定的参考价值。
阻塞IO:
默认情况下,所有的套接字都是阻塞的,对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所有等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用程序缓冲区。
非阻塞式I/O:
进程把一个套接字设置成非阻塞是在通知内核,当所请求的I/O操作非得把本进程投入睡眠才能完成时,不要把进程投入睡眠,而是返回一个错误。看看非阻塞的套接字的recvfrom操作如何进行
异步I/O:这类函数的工作机制是告知内核启动某个操作,并让内核在整个操作(包括将数据从内核拷贝到用户空间)完成后通知我们。
在数据从内核复制到应用缓冲区期间(用户空间),进程阻塞于recvfrom调用。
-
阻塞,非阻塞:进程/线程要访问的数据是否就绪,进程/线程是否需要等待;
-
同步,异步:访问数据的方式,同步需要主动读写数据,在读写数据的过程中还是会阻塞;异步只需要I/O操作完成的通知,并不主动读写数据,由操作系统内核完成数据的读写。
以上是关于阻塞和非阻塞同步和异步的主要内容,如果未能解决你的问题,请参考以下文章