繁体   English   中英

cpp unix多线程套接字阻塞和非阻塞。 阻塞什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM