tbb学习笔记(二):原子操作

使用原子操作可以避免互斥。当一个线程调用原子操作时,其他线程会视之为瞬间发生的。

优点:相对于Lock速度快,且不会有死锁和convoying。

缺点:原子操作只限于有限的几种操作。

tbb中基本的原子操作如下表


所谓的compare_and_swap操作如下代码所示:

atomic<int> globalx;

int UpdatedX() { // Update x and return old value of x.
    do {
       // Read globalX
        oldx = globalx;
        newx = ...expression involving oldx....
        // Store new value if another thread has not changed globalX. 
       }while (globalx.compare_and_swap(newx, oldx)!=oldx);
     return oldx;
}


注意:  所谓ABA 问题
1. A线程从globalx中读取了value A 

2. 其他的线程将globalx的值修改从A到B再到A

3.步骤1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值