グローバル変数flag、関数this()、および関数がありますthat()。現在、、、main()およびthis()すべてthat()の人は、読み取りおよび/または書き込みが必要な場合がありますflag。ミューテックスを適切に使用するには、次のことが必要です。
- a を宣言し
pthread_mutex_tて初期化します。 this()およびそれらのスレッドを作成しますthat()。終了する前に終了するのを待ちpthread_join()たいからです。main()this()that()- コードのどこでも、
main()、this()、またはthat()、flag読み取りまたは書き込みが行われている場所で、呼び出してpthread_mutex_lock()から [read/write]flagを呼び出してから呼び出しますpthread_mutex_unlock()
あれは正しいですか?
これを行う予定はありませんが、次のようflagに無限ループをチェックインしたい場合main():
while(flag != value)
continue;
あなたlock()とミューテックス、および他のスレッドは、常にそのようにいたるところunlock()にアクセスする機会を得ますflagか?main()