Skip to content

Implementation of a high-performance spin read-write lock for scenarios with extremely read-heavy and write-light access patterns.

License

Notifications You must be signed in to change notification settings

HSLL175848494/SpinReadWriteLock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 

Repository files navigation

HSLL::SpinReadWriteLock - 高效读写自旋锁

场景

在并发编程中,mutex 等锁机制常用于保护共享数据。当读写操作频率相近时,优化空间通常有限。针对读操作远多于写操作的场景,读写锁可实现多个读者并行访问,从而提升性能。该自旋锁专为极端多读少写场景设计(写操作频率极低但同步机制不可或缺),基于原子变量实现高效同步。

优点与缺陷

优点

  • 极低的读延迟:在多读者频繁读取场景下,性能显著优于 std::shared_mutex

缺陷

  • 较高内存占用:32个槽位配合64字节对齐,单锁占用2KB内存
    (可通过减少槽位数降低内存占用,但可能导致性能下降)
  • 较高写延迟
    • 获取写锁需锁定所有槽位并等待所有读者退出
    • 解锁需移除所有槽位的写标记

使用示例

性能测试

测试配置:8个读线程(每线程执行1,250,000次获取/释放读锁操作),10次测试平均吞吐量
(注:测试场景不包含写操作,符合锁设计目标)

锁类型 吞吐量 (百万操作/秒) 相对性能 (基准: std::shared_mutex)
std::shared_mutex 17.2459 1.00x (基准)
SpinReadWriteLock 555.8871 32.23x
UniqueReadWriteLock 902.2784 52.32x

测试环境

组件 规格说明
编译器 MSVC v143 x64
优化选项 /O2 (最大速度优化)
CPU Intel i7-11800H (8核/16线程)
基础频率 2.3 GHz
操作系统 Windows 10/11 x64 (Build 19045.5737)

About

Implementation of a high-performance spin read-write lock for scenarios with extremely read-heavy and write-light access patterns.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages