関数pthread_mutex_initを使用すると、属性へのポインターを指定できます。しかし、私はまだpthread属性が何であるかについての良い説明を見つけていません。私は常にNULLを常に提供しています。この議論には用途がありますか?
ドキュメンテーション、忘れた方のために:
PTHREAD_MUTEX_INIT(3)BSDライブラリ関数マニュアル
PTHREAD_MUTEX_INIT(3)NAME pthread_mutex_init-ミューテックスを作成する
あらすじ
#include <pthread.h> int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
説明pthread_mutex_init()関数は、attrで指定された属性を持つ新しいミューテックスを作成します。 attrがNULLの場合、デフォルトの属性が使用されます。
その情報を見つけるのに最適な場所は、POSIX標準ページからです。
NULL
mutex属性は、実装で定義されたデフォルト属性を提供します。属性で何ができるかを知りたい場合は、 以下の参照 を確認し、pthread_mutexattr_*
セクションのSEE ALSO
リンクをたどってください。通常、デフォルトは賢明な属性のセットですが、プラットフォームによって異なる可能性があるため、既知の属性を持つミューテックスを明示的に作成することをお勧めします(移植性のために優れています)。
これは、標準の1007.1-2008の第7号用です。その出発点は here です。左下のHeaders
をクリックすると、特定の機能(pthreads.h
を含む)に移動できます。
属性を使用すると、次のものを設定または取得できます。
また、完全を期すために、 initおよびdestroy呼び出し もあります。これは、特定の属性に直接関連するものではなく、それらを作成するために使用されます。
すべてのミューテックス属性は、次の形式の関数によってミューテックス属性オブジェクトに設定されます。
int pthread_mutexattr_setname(pthread_attr_t *attr, Type t);
すべてのミューテックス属性は、次の形式の関数によってミューテックス属性オブジェクトから取得されます。
int pthread_mutexattr_getname(const pthread_attr_t *attr, Type *t);
ここで、名前とタイプは次の表のように定義されています。
Type and Name Description and Value(s)
int protocol Define the scheduling classes for mutex locks
PTHREAD_PRIO_NONE,PTHREAD_PRIO_PROTECT,
PTHREAD_PRIO_INHERIT
int pshared Defines whether a mutex is shared with other processes.
PTHREAD_PROCESS_SHARED, PTHREAD_PROCESS_PRIVATE
int prioceiling Used for mutex attribute priority ceiling values.
See POSIX.1 section 13
int type Application defined mutex locking
PTHREAD_MUTEX_NORMAL,PTHREAD_MUTEX_RECURSIVE,
PTHREAD_MUTEX_ERRORCHECK,PTHREAD_MUTEX_DEFAULT
_<pthread.h>
_ の関数リストを下にスクロールすると、init
、destroy
を含む一連の_pthread_mutexattr_...
_関数が見つかります。 mutexのさまざまな属性を設定する関数。 NULL
を渡すと、これらすべての属性に適切なデフォルトでミューテックスが作成されますが、特定の属性を変更する必要がある場合は、_pthread_mutexattr_t
_構造体を作成して渡すことができます。
この引数にNULLを適用すると、デフォルトの引数が使用されます。したがって、いくつかの理由で、これらのデフォルト設定を変更したい場合があります(pthread_mutexattr_initを使用)。
ドキュメントには、これらのミューテックス設定について必要なすべてが説明されています。