terminate called without an active exception異常


在gcc4.4下,采用回調機制寫了一個類似std::thread的線程類。

但是使用時卻發生了核心已轉移的錯誤。

main函數調用的代碼大致是

int main(int argc, char *argv[]) {
	FuncA();
        sleep(10);   
}

 FuncA內涵邏輯會創建一個線程大致邏輯精簡為

void FuncA(){
  CallBackThread<T,O> t1(Arg1,Arg2);
}

 其實這錯誤挺明顯了,但是當時沒看出來,主要是其實能運行

如果注釋掉sleep采用while(true)代替,那么程序正常運行。估計即使釋放掉對象后不關已經在運行的線程什么事情了。但其實線程執行的是該對象的代碼段,很奇怪竟然不用sleep就正常運行。

至於terminate called without an active exception異常是我將編譯器切到gcc-6后,使用std::thread才打印出的異常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM