2010-12-08 6 views
0

いくつかの情報:私はいくつかのデバイスを制御するプログラムを書く必要があります(これは基本的な機能です)。しかし、私は他のカスタム機能を有効にするためにプラグインシステムを作成する必要があります。私はそれらのプラグインのソースの品質を制御する方法がないので、私はロードされたプラグインごとにスレッドを作成し、それからそれ自身のメインループを実行すると考えました。私は標準的なC++の例外をキャッチすることができますが、問題はどのようにシグナルを処理するのか分かりません。最良の方法は、プラグインのスレッドを非同期的にキャンセルして、クリーンアップしてリソースを解放するか、単に彼を殺すチャンスを与えるが、どのスレッドが現在の信号を引き起こすかを知る方法を知らないことです。何かの変数に現在実行されているスレッド情報を保存して明示的に保存せずにこれを行う方法はありますか?またはこれは完全に悪い考えで、私は別のプロセスを作成し、プラグインを実行する必要がありますか?SIGSEGVを引き起こすスレッドを殺す

答えて

0

はい、これはまったく悪い考えです。スレッドは協調的なものであり、ほぼすべてを共有し、分離を提供しないモデルをプログラミングします。この仕事には間違ったツールです。

0

私は伝統的なプロセスを使用して、完全な分離と通信のためのIPCメカニズムを使用します。

関連する問題