采用detach啟動多個子執行緒,如何讓主執行緒等待子執行緒執行完畢?采用join會阻塞主執行緒,無法同時啟動多個子執行緒。
uj5u.com熱心網友回復:
先啟動所有執行緒,再去join或者創建信號量組,等待所有信號量
uj5u.com熱心網友回復:
創建執行緒時,即執行完 std::thread th(function),執行緒th便開始啟動了。在主執行緒中呼叫th.join()時,此時主執行緒阻塞,等待子執行緒th執行結束回傳后,繼續執行,直到主執行緒結束。
在主執行緒中呼叫th.detach()時,此時子執行緒th與主執行緒分離,主執行緒失去對子執行緒th的控制權,子執行緒th由系統后臺進行管理控制,并由其釋放執行緒相關資源。
uj5u.com熱心網友回復:
就是呼叫join才會使執行緒指定函式,但是這樣就沒辦法在啟動其他的執行緒,jion阻塞主執行緒,所以我是通過detach啟動子執行緒的,我也想到了如何讓主執行緒等待所有執行緒執行完畢
uj5u.com熱心網友回復:
就是創建執行緒后,沒有呼叫join 子執行緒應該是處于掛起狀態,但是呼叫時,就阻塞主執行緒,就join啟動其他子執行緒,感覺不是并行執行,我采用detach時,我之前不知道如何讓主執行緒等待所有子執行緒執行完畢,現在我想到一個方法了,謝謝啦
uj5u.com熱心網友回復:
就不能join啟動其他子執行緒
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/166925.html
標籤:C++ 語言
上一篇:c語言題,著急,很簡單的
下一篇:用堆疊實作四則運算式運算的一道題
