2016-08-12 48 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