pthreadの属性に関するいくつかの質問がありましたが、他の箇所で回答が見つかりませんでした。Pthreadの属性の使用
- 属性(スレッド/ミューテックス)を作成すると、スレッド/ミューテックスに割り当てた直後に解放できますか、スレッドが終了するまで保持する必要がありますか?
- 複数のスレッド/ mutexで属性(スレッド/ mutex)を再利用することは安全ですか?
pthreadの属性に関するいくつかの質問がありましたが、他の箇所で回答が見つかりませんでした。Pthreadの属性の使用
あなたはpthread_mutexattr_init()
のためのPOSIX仕様を読めば、それは言う:
ミューテックスオブジェクトは、1つまたは複数のミューテックスを初期化するために使用されている属性の後に、属性に影響を与える任意の関数は、(破壊を含む)オブジェクトはなら以前に初期化されたmutexには影響しません。
同様
なく、それほど明確に、pthread_attr_init()
の仕様は言うものの:
(おそらく個々の属性値を設定することによって修飾された)、得られた属性オブジェクト
pthread_create()
で使用作成されたスレッドの属性を定義します。単一の属性オブジェクトは、pthread_create()
への複数の同時呼び出しで使用できます。
そしてpthread_create()
の仕様は言う:
pthread_create()
機能は、プロセス内、attr
で指定された属性を持つ、新しいスレッドを作成するものとします。attr
がNULLの場合、デフォルトの属性が使用されます。attr
で指定された属性が後で修正される場合、スレッドの属性は影響を受けてはならない。
私はそれらの引用符は答えがあることを意味だと思う:
それは都合のよいときにはい、あなたは属性オブジェクトを破壊することがあります。実際には、POSIX呼び出しは属性のコピーを作成します。
はい、属性を再利用することは安全です。