[英]How do I know if a boost thread is done?
我使用boost :: thread來處理隊列中的消息。 當第一條消息出現時,我啟動了一個消息處理線程。 當第二條消息出現時,我檢查消息處理線程是否完成。
如果它完成了我開始一個新的如果它沒有完成我什么都不做。
我怎么知道線程是否完成? 我嘗試使用joinable()但它不起作用,因為當線程完成時,它仍然可以連接。
我也試圖立即中斷進程,並在我的線程末尾添加一個中斷點,但它沒有用。
謝謝
編輯:
我想讓我的線程在不確定的時間內休眠,並在觸發信號時喚醒。
這樣做的意思是boost :: condition_variable
據我所知,你應該使用join()方法等待線程執行的結束。 你可以使用timed_join()超時使用它。
您可以使用interrupt()中斷線程。 在這種情況下,如果執行到達中斷點(boost :: this_thread :: sleep()或boost :: this_thread :: interruption_point()),則在線程內部將發生異常。 您在線程內捕獲異常,然后可以關閉它。
您是否嘗試使用boost :: this_thread :: get_id()檢查get_id()。 如果匹配則線程不存在。 但只有退出線程才會發生這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.