C++に1つのフィールドを持つ単純なクラスAがあると仮定します。このフィールドはコンストラクターで初期化されます。クラスAには、doit()
このフィールドの値を変更するために呼び出されるメソッドもあります。doit()
複数のスレッドから呼び出されます。メソッドにのみミューテックスがある場合doit()
、これで十分ですか?初期化されていないフィールドを読み取らないという保証はありますか(コンストラクターにロックがないため)?
編集:私はおそらく十分に明確ではありませんでした。プロセッサキャッシュなどに問題はありませんか?つまり、メモリ領域(つまり私のフィールド)を初期化するためのミューテックスがない場合、他のスレッドがガベージ値を読み取るリスクはありませんか?