正在中断accept()
Interrupting accept()
是否有一种操作系统可移植的方式来中断阻塞的accept
?我有一个多线程的deamon/service,当deamon/servine收到关闭信号时,它需要优雅地关闭所有正在侦听的网络主机。我看到有人说你应该使用非阻塞套接字或超时选择,但这些不会降低性能吗?因为我的应用程序应该尽可能快?deamon在主线程中运行,而每个侦听网络主机都在自己的线程中运行。现在的问题是,如果侦听网络主机的套接字上没有网络流量,accept
将无限期等待。如果我应该使用信号,那么有没有一个使用信号中断accept
的例子?
这里的解决方案是在没有事情可做时不调用accept
。只需使用非阻塞select
或poll
等待,直到有事情可以接受,然后再调用accept
。除非您创建一个非常小的超时,否则从非阻塞调用中醒来并返回等待套接字不会对性能产生任何影响。
相关文章:
- 类成员和中断
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 我的代码运行良好,但在游戏循环中中断
- 使用带有MCP23017的 pigpio 进行中断读取
- 为什么我在 AVR 中的中断无法正常工作?
- 使用 UDP 中断 while()-循环
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 如何在 CompleteAsyncIO 中访问 IOMemoryBufferDescriptor,该描述符通过中断 EP
- 如何为伺服电机创建中断或返回值?
- 开关:无外壳中断
- 如何使用中断停止循环?
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 在 Ubuntu 中编译 SuiteSparse,在安装 CHOLMOD 时中断
- 在PROGMEM中添加更多数据会中断Arduino Mega 2560上的SPI传输
- 附加到 gdb 会中断并且不会继续该过程
- 使用 shared_ptr 在中断时结束多线程循环
- 如何在 TCP/IP 服务器中中断 accept()?
- 如何中断libfcgi中的Accept方法
- 正在中断accept()
- 用MFC中的异步过程调用中断一个accept winsock调用