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

来源:互联网 发布:淘宝上不能买彩票了吗 编辑:程序博客网 时间:2024/05/22 17:21

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

优点:相对于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


原创粉丝点击