2010-12-08 189 views
0

一些信息:我必須編寫一個程序來控制一些設備(這是基本功能)。但是我必須編寫一些插件系統來啓用其他自定義功能。我無法控制這些插件的源代碼質量,所以我想我會爲每個加載的插件創建一個線程,然後它將運行在它自己的主循環中。我能夠捕獲標準的C++異常,但問題是我不知道如何處理信號。最好的辦法是異步取消插件的線程,給他清理和釋放資源的機會,或者殺死他,但不知道如何找出哪個線程導致當前信號。有沒有辦法做到這一點沒有明確保存目前執行的線程信息在一些變量?或者這是個壞主意,我應該創建單獨的進程,然後運行插件?殺死線程導致SIGSEGV

回答

0

是的,這完全是一個壞主意。線程是一個合作伙伴,共享幾乎所有的東西,編程模型不提供任何隔離。這只是這項工作的錯誤工具。

0

我會用傳統的過程來獲得完全的隔離,並使用IPC機制進行通信。