随笔分类 - liburcu
urcu库的使用
摘要:今天在看sheepdog源代码的时候,发现它的log系统使用了liburcu这个库里面的函数,详细调研了一下。读取拷贝更新,意思就是说,在要进行update的时候,先保留旧数据,然后替换新数据;再等待旧数据无人使用后,删除旧数据。从它的思想可以看到它写入数据的开销比较大,因为要等待所有读取线程都不在使用旧数据为止。这种结构比较适合用在很多线程读,但只有少量写的地方。Linux核心提供了基于RCU的锁函数。但在用户态下,需要自己调用其他库,比如liburcu这个库。liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. Th
阅读全文