参考资料:
1.预备知识:QSBR算法
b-tree-QSBR简介
QSBR是通过quiescent state来检测grace period。如果线程T在某时刻不再持有共享对象的引用,那么该线程T在此时就处于quiescent state。如果一个时间区间内,所有线程都曾处于quiescent state,那么这个区间就是一个grace period。QSBR需要实现时明确手动指明在算法某一步处于quiescent state。
具体实现时,可以在时间轴上划分出interval,每个interval内,每一个线程至少有一次quiescent state。那么当前interval删除的对象的内存可以在下一个interval结束时释放掉。
需要注意的是,QSBR是个blocking的算法。如果某个线程卡死了,那么就等不到grace period了,最终导致内存都无法释放。
以及源码实现
国外的博客文章
Using Quiescent States to Reclaim Memory
Using Quiescent States to Reclaim Memory
中文翻译:
使用QSBR进行多线程安全的内存回收-CSDN VIP文章
2.极客重生大佬解读RCU作品
深入理解RCU|核心原理
深入理解RCU | RCU源码剖析
3.dpdk中的RCU锁
RCU Lib in DPDK
bilibili视频
Faster memory reclamation with DPDK RCUComparing the DPDK and Userspace RCU lib