【Boost】boost库中thread多线程详解12——线程的分离与非分离
Boos::thread線程的默認屬性為非分離狀態,線程結束后線程標識符、線程退出狀態等信息需要通過join方法回收。
boost::thread?thread_func(func);
thread_func.join();
Join方法會阻塞,直到該線程執行結束。
Join函數是boost::thread中少數幾個會拋出異常的方法之一。
當join函數過程中如果?interrupt()?方法被調用,join函數會拋出一個boost::thread_interrupted異常。例外bool?timed_join(TimeDuration?const&?rel_time);方法阻塞特定的時間,如果超時了但線程仍未退出,則返回false。
當用戶并不關心線程的退出狀態時,可以設置thread狀態為分離,這樣boost::thread會自動回收線程資源。
boost::thread?thread_func(func);
thread_func.detach();
bool?joinable()?方法返回線程是否是分離狀態。
當代表一個執行線程的線程對象被破壞時,這個線程變成分離的,一旦它被分離,將會繼續執行知道喚醒由構造體提供的函數或者可調用對象執行結束,或者程序已經結束。線程也可以通過調用detach()成員函數來顯示的分離。在這種情形下,線程對象將不在表示一個當前分離的線程,而是一個非線程體。
總結
以上是生活随笔為你收集整理的【Boost】boost库中thread多线程详解12——线程的分离与非分离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Boost】boost库中thread
- 下一篇: 【Boost】boost库中thread