2

この方法でミューテックスを初期化することは可能ですか:

pthread_mutex_t  mutex = {0};

次の3つのミューテックスの初期化の違いは何ですか:

1) pthread_mutex_init(&mutex, NULL);
2) pthread_mutex_t  mutex = {0};
3) pthread_mutex_t  mutex = PTHREAD_MUTEX_INITIALIZER;
4

1 に答える 1

11
  • &mutex最初のオプションでは、イニシャライザ関数を明示的に呼び出すことによって、ミューテックスが初期化される時間を制御します (また、引数は である必要があります)。
  • pthread_mutex_t2 番目のオプションは、不透明であると想定されるオブジェクトの内部レイアウトに関することを想定しています。使用しないでください。
  • 3 番目のオプションは、mutex を静的に初期化します。グローバルまたは静的スコープで定義されている場合、プログラムの起動時に初期化されます。ローカル スコープでも使用できますが、エラー状態をチェックしないため、これはお勧めできません。

参照: http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html

于 2013-01-31T09:47:32.353 に答える