2

我是 Linux 新手,正在学习 RCU 部分。我看到操作期间有一个宽限期。只是想知道一些新作家是否想在宽限期内更新数据,有可能吗?我想有两种方法:

  1. 在宽限期内,它带有写锁

  2. RCU 可以在 RCU 上工作,这意味着它在旧 RCU 上创建一个新 RCU,等待新 RCU 完成,然后旧 RCU 进入宽限期结束。

哪种方式适用于 Linux?

4

1 回答 1

2

只是想知道一些新作家是否想在宽限期内更新数据,有可能吗?

对的,这是可能的。Writer 不必等待宽限期结束。宽限期对于回收阶段也很重要(简单地说,在删除之后,我们正在等待访问数据的读者(在我们删除之前)完成使用它并退出关键部分,例如通过rcu_read_unlock(),然后我们可以释放它)。

除了基于RCU 支持单个更新器和多个读取器之间的并发这一事实之外,这不是 RCU 的问题。因此,如果您有多个更新程序,则应应用适当的锁定。

RCU 经常与自旋锁一起使用来解决更新程序之间的并发问题。因此,您可以在 Linux 内核源代码中看到一些将 RCU 与多个更新程序一起使用的清晰示例。

有用的链接:

于 2018-07-10T13:05:45.177 回答