自旋锁
文章平均质量分 90
柴郡猫编程乐园
这个作者很懒,什么都没留下…
展开
-
C++11实现一个读写自旋锁-1
本文介绍两种使用自旋锁方式实现读写锁的方案。方案一基本原理是使用一个原子变量作为计数器,如果该计数器的值大于0,说明有读者在持有读锁,它的值就是读者的数量,当计数器的值为-1时,说明有写者在持有写锁,如果计数器的值为0,则说明既没有读者持有读锁,也没有写锁持有写锁。所提供的接口有申请读锁,尝试申请读锁,释放读锁,申请写锁,尝试申请写锁,释放写锁等。定义读写锁rw_spin_lock类如下,它包含一个atomic_int类型的数据成员和六个申请锁、释放锁的成员函数,没有拷贝和移动语义。在实现时,要注意申原创 2021-12-16 21:34:08 · 1804 阅读 · 0 评论 -
自旋锁的实现及优化
自旋锁的实现算法大多使用的是Test And Set算法,简称TAS,也就是先对目标值进行检查,如果目标符合预期的要求则同时把它修改为所需要的值。先介绍一下TAS原语,它的语义原型如下:function tas(p : pointer to bool) returns bool { bool value = *p if !*p { *p ←true } return value}它的语义是这样的:如果指针p指向的变量原值为false,就设置原创 2021-11-04 17:17:30 · 4029 阅读 · 3 评论