1 #include <atomic>
2 #include <iostream>
3 #include <thread>
4 
5 using namespace std;
6 
7 atomic<int> g_num(0);
8 
task0_entry(void)9 static void task0_entry(void)
10 {
11     int i;
12 
13     for (i = 0; i < 1000000; i++) {
14         g_num++;
15     }
16 }
17 
task1_entry(void)18 static void task1_entry(void)
19 {
20     int i;
21 
22     for (i = 0; i < 1000000; i++) {
23         g_num--;
24     }
25 }
26 
atomic_test(void)27 void atomic_test(void)
28 {
29     cout << "atomic test start" << endl;
30     thread thread0(task0_entry);
31     thread thread1(task1_entry);
32     thread0.join();
33     thread1.join();
34     cout << "g_num is: " << g_num << endl;
35     if (g_num != 0) {
36         cout << "atomic test error" << endl;
37     } else {
38         cout << "atomic test ok" << endl;
39     }
40 }
41