1

我有一个关于 RCU 锁的问题。

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

查找所附图像。

在此处输入图像描述

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

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

我错过了什么吗?

谢谢。

4

1 回答 1

0

这就是 RCU 的工作原理,这也是 RCU 和锁之间的主要区别。

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

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

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

于 2017-09-04T10:13:07.033 回答