私はこのようなセットアップを少し持っています:
void* work(void*) { while (true) {/*do work*/} return 0;}
class WorkDoer
{
private:
pthread_t id;
public:
WorkDoer() { pthread_create(&id, NULL, work, (void*)this); }
void Shutdown() { pthread_join(id, NULL); /*other cleanup*/ }
}
がShutdown()
メイン スレッドから呼び出される場合もあれば、スレッド自体から shutdown を呼び出したい場合もあります (そのスレッドからすぐに戻ります)。
のドキュメントには、呼び出し元のスレッドが渡されたものと同じ場合にpthread_join()
a を返すと書かれています。EDEADLK
私の質問は次のとおりです。それは大丈夫ですか?(とにかくすぐにスレッドをうまく終了するので、結合の失敗を無視しますか?) または、それは避けるべきものですか?