linux编程的108种奇淫巧计-7(Lock-free实验)

本文探讨锁在编程中的应用,尤其是spin lock、wait-free和lock-free的概念。通过介绍compare_and_swap及fetch_and_add这两个基本原子操作,展示了如何实现自旋锁。文中提供了一段使用CAS实现的自旋锁代码,并计划在后续文章分享实验结果和更多lock-free话题。
摘要由CSDN通过智能技术生成

 发现csdn把我一篇博客搞丢了,好在从百度快照(http://cache.baidu.com/c?m=9d78d513d99d1cfe01fa950e1a16a1711824d4236b80c7150e96c414cf2f051a143ab6af60624e0b89833a2516ae3a41f7a0682f621420c0ca89de16cabbe57478ce3a762740da0a4c884af39e5b768166cb0bb7f804b1edb661c8f093ced85f58cb500470&p=8c79dd5b85cc42ac09bd9b7d0f15943e&user=baidu&fm=sc&query=lock%2Dfree+pennyliang&qid=85f69a7b02003286&p1=1)中找回,复原如下

 

 

    从该博客开始,会有一些小系列预计有4-5篇博文来介绍,锁的应用和实践,我们常常听到spin lock,wait-free,lock-free,这到底是怎么回事,我们能不能自己实现一个spin lock,原理是什么?这个小系列就讨论这个内容。

 

      首先我们来看两个基本操作compare_and_swap和fetch_and_add,基本上lock-free的操作都会依赖这两个基本的原子操作。特别是compare_and_swap这个原子操作,它源于IBM System 370,其包含三个参数:(1)共享内存的地址(*p),(2)该地址期望的值(old_value),(3)一个新值(new_value)。只有当*p == old_value时,才产生交换操作,返回真值,否则返回假值,相当于如下代码 :template<class T>

        bool CAS(T* addr, T exp, T v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值