私は 1 つの std::list<> コンテナーとこれらのスレッドを持っています:
要素を無期限に追加する 1 つのライター スレッド。
使用可能なときに要素を読み取って削除する 1 つのリーダー/ライター スレッド。
コンテナーの SIZE にアクセスする複数のリーダー スレッド (size() メソッドを使用)
最初の 2 つのスレッドからリストへのアクセスを保護する通常のミューテックスがあります。私の質問は、サイズ リーダー スレッドもこのミューテックスを取得する必要があるかどうかです。読み取り/書き込みミューテックスを使用する必要がありますか?
Visual C++ 6 を使用する Windows 環境にいます。
更新:答えはまだはっきりしていないようです。主な疑問を要約すると: 正確な値を必要としない (つまり、 +/- 1 変動)? 競合状態により、size() 呼び出しが無効な値 (つまり、適切な値とはまったく関係のない値) を返すようになるのはなぜですか?
回答: 一般に、競合状態を回避するためにリーダー スレッドを保護する必要があります。それにもかかわらず、私の意見では、アップデートで上記の質問のいくつかはまだ答えられていません.
前もって感謝します!
回答ありがとうございます。