我是 Linux 新手,正在学习 RCU 部分。我看到操作期间有一个宽限期。只是想知道一些新作家是否想在宽限期内更新数据,有可能吗?我想有两种方法:
在宽限期内,它带有写锁
RCU 可以在 RCU 上工作,这意味着它在旧 RCU 上创建一个新 RCU,等待新 RCU 完成,然后旧 RCU 进入宽限期结束。
哪种方式适用于 Linux?
我是 Linux 新手,正在学习 RCU 部分。我看到操作期间有一个宽限期。只是想知道一些新作家是否想在宽限期内更新数据,有可能吗?我想有两种方法:
在宽限期内,它带有写锁
RCU 可以在 RCU 上工作,这意味着它在旧 RCU 上创建一个新 RCU,等待新 RCU 完成,然后旧 RCU 进入宽限期结束。
哪种方式适用于 Linux?
只是想知道一些新作家是否想在宽限期内更新数据,有可能吗?
对的,这是可能的。Writer 不必等待宽限期结束。宽限期对于回收阶段也很重要(简单地说,在删除之后,我们正在等待访问数据的读者(在我们删除之前)完成使用它并退出关键部分,例如通过rcu_read_unlock()
,然后我们可以释放它)。
除了基于RCU 支持单个更新器和多个读取器之间的并发这一事实之外,这不是 RCU 的问题。因此,如果您有多个更新程序,则应应用适当的锁定。
RCU 经常与自旋锁一起使用来解决更新程序之间的并发问题。因此,您可以在 Linux 内核源代码中看到一些将 RCU 与多个更新程序一起使用的清晰示例。
有用的链接: