2016-08-12 46 views
1

我目前正在創建一個從Java環境(NDK)中調用本地代碼的程序。 我有一個函數會從我的java代碼中被調用幾次。在這個函數中,我創建了一個分離的線程,它將充當定時器來停止我的本地代碼中的特定函數。 的代碼看起來是這樣的:分離的線程執行結束

void myNativeFunction(){ 
    std::thread timerTrial(&FluidMechanics::Impl::endTrial,this); 
    timerTrial.detach(); 
} 

void endTrial(){ 
    //code here 
    return ; 
} 

的事情是,當endTrial回報我想知道我的線程是否打算終止,釋放所有的資源,當我回來。事實上,myNativeFunction在這之後不久將會再次被調用,所以我不想搞亂我的資源和記憶。

回答

1

是的。當線程返回時,分離將自動釋放任何線程特定的資源。

C++ 11草案,N3690,§30.3.1.7,10,分離()

由*此繼續執行而不 調用線程阻塞表示的線程。當detach()返回時,*不再是 表示可能持續的執行線程。 當以前用*表示的 線程結束執行時, 實現應釋放任何擁有的資源。

(強調我的)。

+0

感謝您快速準確的答覆。 – LBes