2013-09-25 55 views
2

我喜歡C#CancellationTokenSource它允許我終止Task,如this article所示。如何取消(不終止)boost線程?

什麼是類似的算法取消boost::thread?我不想「殺死」或「終止」線程。相反,我想「請求」任務完成。然後我需要等到任務完成。

+0

如果你在windows上使用while循環,並且可以在外部設置一個windows事件是非常有效的。 – Serdalis

回答

0

可以使用boost thread interruption

正在運行的線程可以通過調用相應的升壓的中斷()成員函數 ::線程對象被中斷。當 中斷的線程接下來執行指定中斷 點(或者如果它當前被阻止,同時執行一個)中的一個,並且啓用 中斷,則將在被中斷的線程中拋出boost :: thread_interrupted異常。如果沒有被捕獲,這將導致 中斷線程的執行終止。與其他異常一樣,堆棧將被解開,並且會自動存儲持續時間爲 的對象的析構器被執行。