[英]cpp unix multithread socket blocking and non-blocking. What is blocking?
在我的多线程应用程序中,我使用AF_UNIX类型的套接字。 默认情况下似乎是阻塞。 问题是什么意思是“阻止”? 它是否在执行::recv
或::send
调用或应用程序上的所有线程 (如fgets
do)时阻塞线程 ?
如果它阻止所有线程/整个应用程序,我想需要使用非阻塞套接字? 如果是这样,请举例说明如何设置AF_UNIX非阻塞套接字以及何时需要设置非阻塞模式(以及如何设置)。 怎么样::recv
? 谢谢。
阻塞调用使线程等待操作完成。 在操作完成之前线程无法继续时使用它们,例如由于数据依赖于接收的输入。
一旦信息被缓冲用于传输,或者启动读取操作,非阻塞调用就会返回。 没有数据依赖时使用它们。
通常, 阻塞总是意味着“阻止当前线程”,而不是“阻止我进程中的所有线程。
它只阻止进行recv调用的线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.