質問: マルチスレッドプログラムの場合、1つのスレッドがそれをどのように知ることができなくなったら? マルチスレッドプログラムの場合、1つのスレッドがそれをどのように知ることができなくなったら? 私の考え: (1)psを使ってLWPをチェックしますが、手動では効率的ではありません。 (2)各スレッドでtry-catchを設定します。正常に終了しない場合は、キャッチします。 (3)dying-threadがstd :: coutまたはメインスレッドにメッセージを送信させる。 他のより良いアイデア? ありがとう
回答: スレッド関数の非常に早い段階で `pthread_cleanup_push(3)`を使用することができます。 `pthread_cleanup_push` に与えられた関数は、 "ウォッチャー"スレッドが拾うことができるいくつかのフラグを設定できます。 `pthread_cleanup_push` も `pthread_exit` によって尊重され、例外には束縛されません。 **Edit**: A second way to do this: Use `pthread_key_create(3)` with a destructor function and call `pthread_setspecific(3)` early in the thread function. The destructor function can signal the watching thread it's imminent death.