2

今日、私はPOSIXスレッド属性に出くわしました。それらを初めて使用するとき、それらは少し奇妙な作業です。私は少し混乱してpthread_attr_setdetachstateいます、それは次のように述べています:

POSIXスレッドはデフォルトで(それを作成したスレッドで)結合状態になっていますが、それらを結合するにはpthread_join()、スレッドへの結合を明示的に呼び出す必要があります。

pthread_detachスレッド属性がに設定されている場合でも、明示的に呼び出す必要がありdetachますか?

4

3 に答える 3

3

いいえ、そうすべきではありません。

すでに切り離されているスレッドを切り離そうとすると、不特定の動作が発生します。

したがって、実際にはどちらか一方を実行しますが、両方は実行しません。スレッドを結合しないことが最初からわかっている場合は、属性を持つバリアントを使用します。システムによっては、スレッドの起動時に時間とメモリを節約できる場合があります。

于 2012-12-16T08:40:37.933 に答える
0

いいえ、しません。どちらか一方で十分です。

于 2012-12-16T08:25:23.990 に答える
0

pthread_detach()スレッド属性がデタッチに設定されている場合でも、明示的に呼び出す必要がありますか?

いいえ、必要ありません。これがイラストです。どちらの方法(スレッドを切り離して作成するか、スレッドを作成するかpthread_detach())は正常に機能します。

于 2012-12-16T08:26:47.120 に答える