我想在後臺啓動一個線程,並希望在一段時間後停止它,如果它沒有完成。主要問題是,在等待線程完成或定時器到達最後期限時,程序不應該阻塞。重要的是要保證這一點。中斷線程後的時間量,沒有阻塞而等待
我試過this example,但在等待timed_join
時,它會阻塞。我必須宣佈正在進行一些計算的警告。
void CallbackReceived() {
boost::posix_time::time_duration timeout = boost::posix_time::milliseconds(500);
boost::thread thrd(&Foo);
if (thrd.timed_join(timeout)) {
//finished
} else {
//Not finished;
}
}
您有什麼建議嗎?
關閉我頭頂的'在等待完成之前宣佈警告','有另一個後臺線程負責監視第一個線程','更改第一個線程以便意識到時間限制並可以中止本身..' – forsvarir
開始另一個線程,將調用'timed_join'。 –
@forsvarir我會做出這個答案。 – RedX