【多线程】join()和detach()的用法
生活随笔
收集整理的這篇文章主要介紹了
【多线程】join()和detach()的用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
join()函數的作用是讓主線程等待該子線程完成,然后主線程再繼續執行。這種情況下,子線程可以安全的訪問主線程中的資源。子線程結束后由主線程負責回收子線程資源。
一個子線程只能調用join()和detach()中的一個,且只允許調用一次。可以調用joinable()來判斷是否可以成功調用join()或detach()。
對于不會停止的線程,不要使用join(),因為該線程調用join()后就阻塞了其他所有線程(包括主線程),只有等到你這個線程結束后,其他線程才會繼續運行,以及執行join()調用位置后面的代碼。
你如果在這個線程中使用了無限循環執行的操作,例如while(1){...}的操作,那么這個線程永遠不會停止,你對該線程調用join()后,其他線程和主線程就失去了意義,這明顯不是一個正常的程序。
如果你需要在這個線程中使用無限循環執行的操作,那么就對該線程調用detach()進行線程分離,就不會影響其他線程或者主線程的運行了。
關于例子代碼講解,可以參考這里。
總結
以上是生活随笔為你收集整理的【多线程】join()和detach()的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数学和算法】最小二乘法,SVD奇异值分
- 下一篇: 【数学与算法】三角函数公式【仅供查询】