2016-08-12 9 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()が返ってくると、*これはもはや はおそらく継続的な実行スレッドを表していません。 スレッドが* thisで前に実行を終了すると、 実装は所有リソースを解放します。

(強調鉱山)。

+0

あなたの素早く正確な答えに感謝します。 – LBes

関連する問題