2011-07-05 14 views

答えて

3

必ずしもそうではありません。明示的に待機したくない場合は、スレッドをいつでも切り離すことができます。

考慮すべきいくつかのことがあります。

  • あなたは非切り離されたスレッドに参加していない場合は、ドン場合は、ゾンビスレッド(はい、そのようなものがある)
  • になります」トンスレッドに参加する「子」はあなたがスレッドを切り離した後、バック

あなたがスレッドをデタッチするにはどうすればよいそれを添付する方法はありません

  • 終了する前に、あなたのメインスレッドは終わるかもしれませんか? 2つの方法があります:あなたがプロセスを終了(およびOSがすべてのリソースをクリーンアップ持っている)ことができるかどう

    detachstate = 1; 
    rc = pthread_attr_setdetachstate(&attr, detachstate); 
    if (rc) { 
        handle error; 
    } 
    
    pthread_create(&thr, &attr, th_fun, NULL); 
    

    そして

    void *th_fun(void *arg) 
    { 
        pthread_detach(pthread_self()); 
    } 
    
  • +0

    スレッドで使用されているメモリの割り当てを解除しないと、終了時にOSによって割り当てが解除されますか?非分離スレッドはどうですか? –

    +0

    @Majid Azimi申し訳ありませんが、あなたは何を意味するか説明できますか? – cnicutar

    +1

    @ Azimi @Majidあなたがもうメモリを必要としないときは、それを 'フリーにする '必要があります。 pthreads APIはこれを自動的には行いません。 – cnicutar

    関連する問題