[英]Interrupting accept()
是否有OS便携式方法来中断阻止accept
? 我有一个多线程守护进程/服务,当守护进程/服务收到关闭信号时,它需要正常关闭所有侦听网络主机。 我看到有人说您应该使用非阻塞套接字或使用超时进行选择-但是这些不会降低性能,因为我的应用程序应该尽可能快吗? 守护进程在主线程中运行,而每个侦听网络主机在其自己的线程中运行。 现在的问题是,如果侦听网络主机的套接字上没有网络流量,则accept
无限期等待。 如果我应该使用信号,那么是否有使用信号中断accept
的示例?
解决方案是在无事可做时不调用accept
。 只需使用非阻塞select
或poll
来等待,直到有要接受的东西,然后再accept
。 除非您创建一个非常小的超时,否则从非阻塞调用中唤醒并再次等待该套接字不会有任何性能影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.