Linux kernel 对于Linux RCU,在宽限期内,是否可能有新的写入程序更新新数据?

Linux kernel 对于Linux RCU,在宽限期内,是否可能有新的写入程序更新新数据?,linux-kernel,lock-free,mutual-exclusion,rcu,Linux Kernel,Lock Free,Mutual Exclusion,Rcu,我是Linux新手,正在学习RCU部分。我看到手术期间有一个宽限期。我只是想知道,如果一些新的编写者想在宽限期内更新数据,是否可能?我想有两种方法: 在宽限期内,它带有写锁 RCU可以在RCU上工作,这意味着它会在旧的RCU上创建一个新的RCU,等待新的RCU完成,然后旧的RCU进入宽限期结束 哪种方式适合Linux 我只是想知道,如果一些新的编写者想在宽限期内更新数据,有可能吗 是的,这是可能的。作者不必等待宽限期结束。此外,宽限期对于回收阶段也很重要(简单地说,在删除之后,我们等待访问数据的

我是Linux新手,正在学习RCU部分。我看到手术期间有一个宽限期。我只是想知道,如果一些新的编写者想在宽限期内更新数据,是否可能?我想有两种方法:

  • 在宽限期内,它带有写锁

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

  • 哪种方式适合Linux

    我只是想知道,如果一些新的编写者想在宽限期内更新数据,有可能吗

    是的,这是可能的。作者不必等待宽限期结束。此外,宽限期对于回收阶段也很重要(简单地说,在删除之后,我们等待访问数据的读者(在删除之前)完成对数据的处理并退出关键部分,例如通过
    rcu read\u unlock()
    ,然后我们可以释放数据)

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

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

    有用链接:

    • (包含附加链接和简单示例用法的综合文章)