私はそのようなパターンを使用しています:
boost::thread receiverThread;
....
stayConnected = false;
if (receiverThread.joinable()) {
receiverThread.join();
}
receiverThread
スレッドはstayConnected
フラグを定期的にチェックし、フラグが設定されてfalse
いる場合は終了する必要があります。
ここで、メイン コードを "bad" から保護したいと思います。5 秒経っても終了しないreceiverThread
場合は、それを強制終了します。receiverThread
boost::thread receiverThread;
....
stayConnected = false;
if (receiverThread.joinable()) {
receiverThread.join();
// not to hang forever, if receiverThread not finished after 5 seconds, kill it
}
これを行う最良の方法は何ですか?