1. 程式人生 > >C++ 執行緒join崩潰

C++ 執行緒join崩潰

錯誤資訊:libc++abi.dylib: terminating with uncaught exception of type std::__1::system_error: thread::join failed: Invalid argumentonEvent event ID 6.解決:1. 檢查是否所等待執行緒進入死迴圈無法正常退出,導致join等待超時?

2.檢查是否執行緒使用了同一變數如running=true來作為執行緒退出標記,而此全域性標記是在其他執行緒中修改值的。若如此,儘量使用volatile關鍵字來控制running變數值不被做快取優化,使其每次都從記憶體中獲取。因為在當前執行緒中若未對running值作過修改,當前執行緒內部會快取此running值以便下次可以不在記憶體中獲取。此時若其他執行緒對running值作了修改,當前執行緒是不知道的。所以要加volatile修飾符。