快速线程同步

Ren*_*ato 2 c c++ multithreading pthreads

我正在研究一个拥有多个线程和一个共享对象的系统.有许多线程经常进行读取操作,但写入操作很少,每天可能需要3到5次.

我正在使用rwlock进行同步,但锁定获取操作不够快,因为它一直在发生.所以,我正在寻找一种更快的方法.

也许是一种在写入期间使写入函数成为原子或查找所有线程的方法.可移植性并不是一项硬性要求,我使用的是Linux和GCC 4.6.

bdo*_*lan 5

您是否考虑过使用liburcu进行read-copy-update ?这使您可以避免原子操作并完全锁定读取路径,但代价是使写入速度慢得多.请注意,有些读者可能会在短时间内看到陈旧数据; 如果您需要更新立即生效,它可能不是您的最佳选择.