2017-04-20 15 views
1

RCUロックに関する質問があります。RCUロックで古いバージョンか新しいバージョンのどちらかを読むのは大丈夫ですか?

私が知る限り、RCUでは、古いバージョンまたは新しいバージョンのいずれかを持つ読者(猶予期間の前に開始され、猶予期間に終了する)を許可しています。

添付画像を参照してください。

enter image description here

だから、黄色の部分の前に始まり、黄色の部分以内に終了する読者は、更新(削除)値または古い値のいずれかを読み取ることができます。

しかし、私の質問は、読者が不確定な価値を持つのはなぜ大丈夫ですか? 私はすべての読者が確定値を持つべきだと思います。つまり、それは古い値でも新しい値でもないはずです。

何か不足していますか?

ありがとうございました。

答えて

0

RCUとロックの主な違いはRCUの仕組みです。

たとえば、RWロックを使用すると、更新中にすべてのリーダーが停止し、更新が完了するのを待つことができます。その後、すべての読者は更新されたデータを一度に見る。

RCUでは、更新前または更新後のいずれかのデータを表示できますが、多くのユースケースでは問題ありません。 RCUの主な利点は、読者が決してブロックされず、作家が決してブロックされないということです。

確かに、プログラムのロジックが作業スレッド間で厳密なデータコヒーレンシを必要とする場合、RCUは最良の選択ではありません。 RWロックを見てください。

関連する問題