提高性能的一种方式 atomic 替换mutex
内存序跟原子操作本身并不冲突, 不论用那种内存序该原子还是原子操作
atomic内存序: 就是来指定顺序的
例子:
注 : 像类似 memory_order_relaxed 都是以函数为单位来重新排执行指令的 [这个注释后面再来看好了]
#include <atomic>
atomic<int> a (0);
atomic<int> b(0);
unsigned int __stdcall thread_write(void *ar){
int hahah = 123; //1
int balala = hahah; //2
a.store(1,std::memory_order_relaxed); //3
b.store(666,std::memory_order_relaxed); //4
bool ooo = false; //7
return 0;
}
unsigned int __stdcall thread_read(void * arg){
while(b.load(std::memory_order_relaxed) != 666); //5
int r = a.load(std::memory_order_relaxed); //6
cout << "a : " << r << endl;
assert( r ==1 );
return 0;
}
int m