是否可以在RCU锁中读取旧版本或新版本?

时间:2017-04-20 07:19:27

标签: operating-system synchronization rcu

我对RCU锁定有疑问。

据我所知,RCU允许一些读者(在宽限期之前开始并在宽限期结束时)拥有旧版本或新版本。

查看附件图片。

enter image description here

因此,在黄色部分之前开始并在黄色部分内结束的读者可以读取更新(删除)值或旧值。

然而,我的问题是为什么读者可以拥有不确定的价值? 我认为所有读者都应该有确定的价值,这意味着它不应该是旧价值或新价值。

我错过了什么吗?

感谢。

1 个答案:

答案 0 :(得分:0)

这就是RCU的工作方式,这是RCU和锁之间的主要区别。

例如,使用RW锁可以确保在更新期间每个阅读器都停止并等待更新完成。然后所有读者立即看到更新的数据。

RCU设计允许您在更新之前或之后查看数据,但对于许多用例,它是可以的。 RCU的主要优点是读者永远不会被阻止,作家永远不会被阻止。

当然,如果您的程序逻辑需要工作线程之间严格的数据一致性 - RCU不是最佳选择。看看RW Locks然后......