Skip to content

rw_lock.h

mutouyun edited this page Dec 9, 2025 · 3 revisions

rw_lock.h

#include "libipc/rw_lock.h"

定义线程内同步锁类,包括自旋锁和读写锁。

包含的类

  • ipc::spin_lock - 轻量级自旋锁
  • ipc::rw_lock - 读写锁

辅助函数

yield函数

template <typename K>
void yield(K& k) noexcept;

自适应yield函数,根据重试次数选择不同的等待策略:

  • 0-4次:无操作
  • 4-16次:CPU pause指令
  • 16-32次:std::this_thread::yield()
  • 32次以上:睡眠1毫秒

sleep函数

template <std::size_t N = 32, typename K, typename F>
void sleep(K& k, F&& f);

template <std::size_t N = 32, typename K>
void sleep(K& k);

带阈值的sleep函数,在重试次数未达到N时yield,达到后执行自定义函数或睡眠。

使用示例

#include "libipc/rw_lock.h"

// 使用自旋锁
ipc::spin_lock spin;
spin.lock();
// 临界区
spin.unlock();

// 使用读写锁
ipc::rw_lock rw;

// 写锁(独占)
rw.lock();
// 写入数据
rw.unlock();

// 读锁(共享)
rw.lock_shared();
// 读取数据  
rw.unlock_shared();

相关文档

  • ipc::spin_lock - Spin Lock类详细文档
  • ipc::rw_lock - RW Lock类详细文档

Clone this wiki locally