2017-11-22 6 views
3

pthreadの属性に関するいくつかの質問がありましたが、他の箇所で回答が見つかりませんでした。Pthreadの属性の使用

  1. 属性(スレッド/ミューテックス)を作成すると、スレッド/ミューテックスに割り当てた直後に解放できますか、スレッドが終了するまで保持する必要がありますか?
  2. 複数のスレッド/ mutexで属性(スレッド/ mutex)を再利用することは安全ですか?

答えて

4

あなたはpthread_mutexattr_init()のためのPOSIX仕様を読めば、それは言う:

ミューテックスオブジェクトは、1つまたは複数のミューテックスを初期化するために使用されている属性の後に、属性に影響を与える任意の関数は、(破壊を含む)オブジェクトはなら以前に初期化されたmutexには影響しません。

同様

なく、それほど明確に、pthread_attr_init()の仕様は言うものの:

(おそらく個々の属性値を設定することによって修飾された)、得られた属性オブジェクトpthread_create()で使用作成されたスレッドの属性を定義します。単一の属性オブジェクトは、pthread_create()への複数の同時呼び出しで使用できます。

そしてpthread_create()の仕様は言う:

pthread_create()機能は、プロセス内、attrで指定された属性を持つ、新しいスレッドを作成するものとします。 attrがNULLの場合、デフォルトの属性が使用されます。 attrで指定された属性が後で修正される場合、スレッドの属性は影響を受けてはならない。

私はそれらの引用符は答えがあることを意味だと思う:

  1. それは都合のよいときにはい、あなたは属性オブジェクトを破壊することがあります。実際には、POSIX呼び出しは属性のコピーを作成します。

  2. はい、属性を再利用することは安全です。

関連する問題