1、概要
本文是无锁同步系列文章的第一篇,主要探讨C++11中的Atomic。
我们知道在C++11中引入了mutex和方便优雅的lock_guard。但是有时候我们想要的是性能更高的无锁实现,下面我们来讨论C++11中新增的原子操作类Atomic,我们可以利用它巧妙地实现无锁同步。
2、传统的线程同步
1 #include <thread>
2 #include <mutex>
3
4 #include <iostream>
5
6 using namespace std;
7
8 mutex g_mutex;
9 int g_count = 0;
10
11 int main()
12 {
13 thread thr1([]() {
14 for (int i = 0;i < 5;i++) {
15 lock_guard<mutex> lock(g_mutex); //①