【原子操作】顺序操作

简介: 【原子操作】顺序操作

atomic.cpp

#include <atomic>
#include <iostream>
#include <thread>
std::atomic<int> count = {0};
// g++ atomic.cpp -lpthread -std=c++14 -latomic
struct A {
    float x;
    int y;
    long long z;
};
int main()
{
#if 0    
    std::thread t1([]{
        while(1){
            if(count == 0){
                std::cout<< "t1:1"<<'\n';
                count.fetch_add(1);
            }
        }
    });
    std::thread t2([]{
        while(1){
            if(count == 1){
                std::cout<< "t2:2"<<'\n';
                count.fetch_sub(1);
            }
        }
    });
    t1.join();
    t2.join();
 #endif   
    std::atomic<A> a;
    std::cout << std::boolalpha << ":" << a.is_lock_free() << std::endl;
    return 0;
}
相关文章
|
5月前
|
Cloud Native Go C语言
C 语言的 互斥锁、自旋锁、原子操作
C 语言的 互斥锁、自旋锁、原子操作
|
5月前
|
存储 编译器 API
锁与原子操作CAS
锁与原子操作CAS
91 0
|
4月前
|
API 调度 C语言
互斥锁,自旋锁,原子操作的原理,区别和实现
v互斥锁,自旋锁,原子操作的原理,区别和实现
27 0
|
3月前
|
算法
原子操作CAS
原子操作CAS
20 0
|
3月前
|
缓存 Linux API
原子操作CAS与锁实现
原子操作CAS与锁实现
|
3月前
|
存储 缓存 算法
理解原子操作与CAS锁
理解原子操作与CAS锁
27 0
|
3月前
|
存储 安全 中间件
锁与原子操作CAS的底层实现
锁与原子操作CAS的底层实现
|
9月前
多线程的原子操作
多线程的原子操作
41 0
|
5月前
互斥锁、自旋锁、原子操作
互斥锁、自旋锁、原子操作
|
5月前
|
缓存 算法 安全
从内存可见性看volatile、原子操作和CAS算法
从内存可见性看volatile、原子操作和CAS算法
26 0