加载中...
RCU 是一种面向读多写少场景的同步机制,允许读者几乎无锁地并发访问数据,而写者通过复制修改并延迟回收旧数据来避免干扰读者。它是 Linux 内核中的重要并发技术。

| 中文名 | 读-复制-更新 |
| 适用 | 读多写少 |
| 读端 | 几乎无锁 |
| 关键概念 | 宽限期、延迟回收 |
| 典型应用 | Linux 内核 |
读-复制-更新(RCU,Read-Copy-Update)是一种同步机制,专为读操作远多于写操作的并发场景设计。它让读者在几乎不加锁、开销极低的情况下并发访问共享数据,同时保证写者能安全地修改数据而不破坏正在进行的读取。它是 Linux 内核广泛使用的核心并发技术。
传统读写锁在读多写少时仍需读者获取锁、更新共享状态,带来可观开销并限制扩展性。RCU 的核心洞察是:如果写者不直接就地修改数据,而是先复制一份、在副本上改好,再原子地替换指针,那么正在读旧版本的读者完全不受影响,读路径便可几乎零开销。
RCU 大量用于操作系统内核中读极多、写极少的数据结构,例如路由表、文件系统的目录项缓存、模块与设备列表等。凡是查询频繁而更新罕见、且要求高并发扩展性的场景,都很适合用它替代读写锁。
问:写多的场景适合用 RCU 吗?答:不太适合。写者需要复制数据并等待宽限期回收,写频繁时开销和内存压力都较大,RCU 的优势在读多写少时才充分体现。
问:读者会读到旧数据吗?答:可能在极短时间内仍读到替换前的旧版本,这是设计允许的;RCU 保证的是读取到的始终是某个一致的历史版本,而非破碎的中间状态。

| 中文名 | 读-复制-更新 |
| 适用 | 读多写少 |
| 读端 | 几乎无锁 |
| 关键概念 | 宽限期、延迟回收 |
| 典型应用 | Linux 内核 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧