gpt4 book ai didi

c++ - 中断 accept()

转载 作者:太空狗 更新时间:2023-10-29 20:42:51 25 4
gpt4 key购买 nike

是否有操作系统可移植的方式来中断阻塞的accept?我有一个多线程守护进程/服务,需要在守护进程/服务收到关闭信号时优雅地关闭所有监听网络主机。我看到有人说您应该使用非阻塞套接字或选择超时 - 但这些不会降低性能,因为我的应用程序应该尽可能快吗?守护进程在主线程中运行,而每个监听网络主机都在自己的线程中运行。现在的问题是,如果监听网络主机的套接字上没有网络流量,accept 会无限期地等待。如果我应该使用信号,那么在某处是否有使用信号中断 accept 的示例?

最佳答案

这里的解决方案是在无事可做时不调用accept。只需使用非阻塞的 selectpoll 等待直到有东西要接受,然后在那个时候接受。除非您创建一个非常小的超时,否则从非阻塞调用中唤醒并返回再次等待该套接字不会对性能产生任何影响。

关于c++ - 中断 accept(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17384766/

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