Multithreading 终止导致SIGSEGV的线程

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

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

是的,这完全是个坏主意。线程是一种协作、共享几乎所有内容的编程模型,不提供任何隔离。对于这项工作来说,它只是一个错误的工具。

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