gpt4 book ai didi

c++ - c++ unix 多线程套接字阻塞和非阻塞。什么是阻塞?

转载 作者:太空狗 更新时间:2023-10-29 23:46:30 26 4
gpt4 key购买 nike

在我的多线程应用程序中,我使用 AF_UNIX 类型的套接字。默认情况下似乎是阻塞的。问题是“阻塞”是什么意思?当它执行::recv::send 调用或所有线程 时,它是否阻塞线程应用程序(像 fgets 那样)?

如果它阻塞所有线程/整个应用程序,我猜需要使用非阻塞套接字吗?如果是这样,请给出一个很好的例子,说明如何设置 AF_UNIX 非阻塞套接字以及何时需要设置非阻塞模式(以及如何)。如何 ::recv ?谢谢。

最佳答案

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

非阻塞调用在信息被缓冲以供传输或读取操作启动后立即返回。在没有数据依赖性时使用它们。

一般来说,阻塞总是意味着“阻塞当前线程”,而不是“阻塞我进程中的所有线程”。

关于c++ - c++ unix 多线程套接字阻塞和非阻塞。什么是阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com