-
Notifications
You must be signed in to change notification settings - Fork 385
rw_lock.h
mutouyun edited this page Dec 9, 2025
·
3 revisions
#include "libipc/rw_lock.h"
定义线程内同步锁类,包括自旋锁和读写锁。
-
ipc::spin_lock- 轻量级自旋锁 -
ipc::rw_lock- 读写锁
template <typename K>
void yield(K& k) noexcept;自适应yield函数,根据重试次数选择不同的等待策略:
- 0-4次:无操作
- 4-16次:CPU pause指令
- 16-32次:
std::this_thread::yield() - 32次以上:睡眠1毫秒
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类详细文档