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

abr*_*hab 2 c++ unix sockets multithreading

在我的多线程应用程序中,我使用AF_UNIX类型的套接字.默认情况下似乎是阻塞.问题是什么意思是"阻止"?是否在执行或调用应用程序或所有线程时阻塞线程(如do)?::recv::sendfgets

如果它阻止所有线程/整个应用程序,我想需要使用非阻塞套接字?如果是这样,请举例说明如何设置AF_UNIX非阻塞套接字以及何时需要设置非阻塞模式(以及如何设置).怎么样::recv?谢谢.

das*_*ght 5

阻塞调用使线程等待操作完成.在操作完成之前线程无法继续时使用它们,例如由于数据依赖于接收的输入.

一旦信息被缓冲用于传输,或者启动读取操作,非阻塞调用就会返回.没有数据依赖时使用它们.

通常,阻塞总是意味着"阻止当前线程",而不是"阻止我进程中的所有线程.