2010-12-08 149 views
0

一些信息:我必须编写一个程序来控制一些设备(这是基本功能)。但是我必须编写一些插件系统来启用其他自定义功能。我无法控制这些插件的源代码质量,所以我想我会为每个加载的插件创建一个线程,然后它将运行在它自己的主循环中。我能够捕获标准的C++异常,但问题是我不知道如何处理信号。最好的办法是异步取消插件的线程,给他清理和释放资源的机会,或者杀死他,但不知道如何找出哪个线程导致当前信号。有没有办法做到这一点没有明确保存目前执行的线程信息在一些变量?或者这是个坏主意,我应该创建单独的进程,然后运行插件?杀死线程导致SIGSEGV

回答

0

是的,这完全是一个坏主意。线程是一个合作伙伴,共享几乎所有的东西,编程模型不提供任何隔离。这只是这项工作的错误工具。

0

我会用传统的过程来获得完全的隔离,并使用IPC机制进行通信。