我在處理多線程服務器中的信號處理時遇到了問題。我爲每個連接創建一個線程,但我想要一個選項來終止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 –