Strata:高效内存回收的无等待同步机制
在多线程编程中,锁机制虽然能确保数据的一致性,但会因锁等待时间降低整体性能。无等待同步(Wait-free synchronization)是一种应对锁开销的方案,它保证每个操作能在有限步骤内完成,实现对数据的无锁访问。其基本思想是创建共享数据的副本进行操作,再将更新信息应用到共享数据上。不过,在无等待同步过程中,内存分配和回收是开销最大的步骤,内存管理方案的问题会严重影响系统整体性能。
现代垃圾回收方案通常基于引用计数,即对象负责记录指向它的引用数量。当引用计数降为零时,对象释放自身内存。但在多核环境下,读写全局共享的引用计数器开销很大,因为需要频繁同步核心间的缓存行。
本文介绍了 Strata,一种利用按时间顺序进行内存分配的无等待同步机制,它能进行批量内存回收,消除对每个对象信息频繁更新的开销,保证读写操作均无等待,且运行时间为 O(1)。
1. 相关工作
为了帮助大家更好地理解 Strata,下面先回顾几种常见的无锁同步和内存回收方案。
- 读拷贝更新(Read Copy Update,RCU)
- 特点 :允许对正在被并发修改的数据结构进行无锁只读访问,读操作无等待且开销极低,但更新操作代价高,因为需要等待现有读者完成访问。
- 步骤 :
1. 创建新结构,将旧结构的数据复制到新结构,并保存旧结构的指针。
2. 修改新复制的结构,更新全局指针指向新结构。
3. 休眠直到操作系统内核确定没有读者使用旧结构。
-
超级会员免费看
订阅专栏 解锁全文
27

被折叠的 条评论
为什么被折叠?



