2009-06-24 154 views
7

您可以像pthread一樣取消一個Boost線程嗎?Boost線程取消

我正在寫一個簡單的看門狗來終止工作線程,如果他們崩潰,並且似乎沒有辦法簡單地取消Boost線程庫中的線程。

回答

10

他們不支持取消,這是一件好事,因爲它會引起各種微妙的問題。

看看文檔中涵蓋線程中斷和boost :: thread_interrupted異常的部分,並且提供一些可以讓你在清理東西的同時完成你想要的東西。

+0

看來像增加線程中斷不會幫助你,如果線程卡在一個循環,這是我試圖防範的事情之一。當我放棄可移植性時,我開始認爲我最好使用pthread清理處理程序。 – 2009-06-25 21:15:54

2

它們不支持取消開箱即用(如指出),但是這取決於你的處理工作線程(S)中的想法,我會考慮使用boost::condition通知線程它應該儘早完成(乾淨)。