易采站长站为您分析探究在C++程序并发时保护共享数据的问题,也有利于大家更好地理解C++多线程的一些机制,需要的朋友可以参考下
我们先通过一个简单的代码来了解该问题。
同步问题
我们使用一个简单的结构体 Counter,该结构体包含一个值以及一个方法用来改变这个值:
- struct Counter { int value;
- void increment(){
- ++value; }
- };
然后启动多个线程来修改结构体的值:
- int main(){ Counter counter;
- std::vector<std::thread> threads;
- for(int i = 0; i < 5; ++i){ threads.push_back(std::thread([&counter](){
- for(int i = 0; i < 100; ++i){ counter.increment();
- } }));
- }
- for(auto& thread : threads){ thread.join();
- }
- std::cout << counter.value << std::endl;
- return 0; }










