私はLinuxのC++でプログラミングしていますが、私はpthreadsライブラリを使っています。私はいくつかの共有変数を保護するためにミューテックスを使用していますが、この特定のケースではミューテックスの使用が必要かどうかはわかりません。同時読み込みでmutexを使うかしないか
私は3つのスレッドを持っています。共有変数は文字列(グローバル変数)です。
スレッド1は値を変更し、その後スレッド2とスレッド3は値を読み取り、別の文字列に格納します。
この場合、文字列の値は1つのスレッドによってのみ変更されます。 2つのスレッドが同時に読める共有変数を保護するためにmutexを使用する必要はありますか?
オブジェクトを変更するスレッドが少なくとも1つある場合は必ずmutexが必要です。あなたがそれを必要としないときの唯一の状況は、誰もが読んでいるだけなのです。 – Quentin
しかし、スレッド2とスレッド3は、スレッド1が既にその値を変更したときにのみ、文字列の値を読み込みます。 –
スレッド1が文字列の変更を完了する前に文字列の変更を完了することができれば、誰もが読むことができます:mutexは必要ありません。 – Quentin