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)9static 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)18static 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)27void 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