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