我对RCU锁定有疑问。
据我所知,RCU允许一些读者(在宽限期之前开始并在宽限期结束时)拥有旧版本或新版本。
查看附件图片。
因此,在黄色部分之前开始并在黄色部分内结束的读者可以读取更新(删除)值或旧值。
然而,我的问题是为什么读者可以拥有不确定的价值? 我认为所有读者都应该有确定的价值,这意味着它不应该是旧价值或新价值。
我错过了什么吗?
感谢。
答案 0 :(得分:0)
这就是RCU的工作方式,这是RCU和锁之间的主要区别。
例如,使用RW锁可以确保在更新期间每个阅读器都停止并等待更新完成。然后所有读者立即看到更新的数据。
RCU设计允许您在更新之前或之后查看数据,但对于许多用例,它是可以的。 RCU的主要优点是读者永远不会被阻止,作家永远不会被阻止。
当然,如果您的程序逻辑需要工作线程之间严格的数据一致性 - RCU不是最佳选择。看看RW Locks然后......