/************************************************************************* > File Name : demo1.cpp > Author : TL Song > EMail : songtianlun@frytea.com > Created Time : Mon Feb 8 08:45:37 2021 ************************************************************************/ #include #include #include #include #include #include int counter = 0; void increase(int time) { for (int i = 0; i < time; i++) { // 当前线程休眠1毫秒 std::this_thread::sleep_for(std::chrono::milliseconds(1)); counter++; } } /* * 自增操作"counter++"不是原子操作,而是由多条汇编指令完成的。多个线程对同一个变量进行读写操作就会出现不可预期的操作。 * 来源:https://zhuanlan.zhihu.com/p/91062516 */ int main(int argc, char** argv) { std::thread t1(increase, 10000); std::thread t2(increase, 10000); t1.join(); t2.join(); std::cout << "counter:" << counter << std::endl; return 0; }