我在处理多线程服务器中的信号处理时遇到了问题。我为每个连接创建一个线程,但我想要一个选项来终止SIGINT的服务器。然而,当其中一个线程捕捉到信号时,事情会变得很糟糕。有没有办法阻止线程获取主线程以外的信号?多线程服务器,信号处理。 POSIX
2
A
回答
5
线程从创建它的线程继承它的信号掩码。
假设创建线程是“主”线程,您可能希望在创建线程之前阻止所有有问题的信号,并且在完成代码之后,解除创建线程中的信号。
修改线程的信号掩码POSIX定义pthread_sigmask()
。
更新:
当信号处理需要在多线程环境定期基地进行,一个有趣的方法是将所有信号委托给一个单独的线程里什么也不做,但等待信号使用sigwait()
抵达。
要做到这一点:
- 设置信号屏蔽按你想在“主”线程别的之前使用
pthread_sigmask()
来处理信号。 - 然后创建线程来处理信号。
- 然后再次使用
pthread_sigmask()
来阻止来自“主”线程中的1.的所有信号。 - 最后创建所有其他线程。
的结果将是在1规定的所有信号会去下2创建线程。所有其他线程将不会收到任何下1规定的信号..
0
相关问题
- 1. POSIX定时器和POSIX信号处理
- 2. 多线程信号处理
- 3. POSIX多线程和信号配置
- 4. TCP线程python服务器没有按预期处理信号
- 5. POSIX线程和信号
- 6. 多线程Python中的信号处理
- 7. 扭曲的多线程,信号处理
- 8. POSIX定时器信号在信号处理程序中未被阻止
- 9. 多处理器机器中posix线程的并发性
- 10. 我Posix线程没有信号醒来
- 11. POSIX线程和公平(信号量)
- 12. POSIX线程和信号掩码
- 13. 多处理器系统上的POSIX线程
- 14. 线程中的信号处理程序
- 15. 多线程服务器可以处理多少个客户端?
- 16. 在服务中处理KILL信号?
- 17. 我的POSIX信号处理程序中的竞争条件
- 18. 线程退出后Qt处理信号?
- 19. 主/从线程和信号处理
- 20. 信号处理 - 异步函数和多线程应用程序,信号栈
- 21. 处理(多线程)套接字服务器新服务器套接字
- 22. 多线程,带停止和继续信号的多处理
- 23. 多线程Java代理服务器
- 24. 如何通过posix信号正确挂起多个线程?
- 25. 在多线程信号处理程序中调用fflush?
- 26. 处理异步信号在多线程程序
- 27. 如何在多线程应用程序中用异步信号管理共享的POSIX信号量
- 28. Unix线程和信号:每个线程的信号处理程序
- 29. 多线程信号
- 30. Posix线程:发信号在while循环中运行的线程
的http://计算器.com/a/18314115/412080 –