条件変数を使用する一般的な方法を次に示します。
// The reader(s)
lock(some_mutex);
if(protected_by_mutex_var != desired_value)
some_condition.wait(some_mutex);
unlock(some_mutex);
// The writer
lock(some_mutex);
protected_by_mutex_var = desired_value;
unlock(some_mutex);
some_condition.notify_all();
しかし、protected_by_mutex_var がたとえばコンペア アンド スワップ命令によってアトミックに設定されている場合、ミューテックスは何らかの目的を果たしますか (pthread やその他の API でミューテックスを渡す必要があること以外に)? 条件を実装するために使用される保護状態ですか?そうでない場合、これを行うのは安全ですか?:
// The writer
atomic_set(protected_by_mutex_var, desired_value);
some_condition.notify_all();
ライターがリーダーのミューテックスと直接対話することはありませんか? 'protected_by_mutex_var' という名前はもはや適切ではないことに注意してください (もはやミューテックス保護ではありません)。もしそうなら、異なるリーダーが同じミューテックスを使用する必要さえありますか?