0.数据共享的问题
在多个线程中共享数据时。需要注意线程安全问题。如果多个线程同时访问同一个变量。并且其中至少有一个线程对该变量进行了写操作。那么就会出现数据竞争问题。数据竞争可能会导致程序崩溃,产生来定义的结果,或者得到错误的热果。为了避免数据竞争问题。需要使用同步机制来确保多个线程之间对共享数据的访同是安全的。常见的同步机制包括互厍量。条件变量,原子授作等。
1. 预期示例
#include <iostream>
#include <thread>int a = 3;
void func()
{std::cout << "begin:" << a << std::endl;a++;std::cout << "end:" << a << std::endl;
}int main()
{for (int i = 0; i < 10; i++){std::thread th(func);th.join();}getchar();return 0;
}
2.目标示例
#include <iostream>
#include <thread>
#include <mutex>int a = 3;
std::mutex mutex;void func()
{mutex.lock();std::cout << "begin:" << a << std::endl;a++;std::cout << "end:" << a << std::endl;mutex.unlock();
}int main()
{for (int i = 0; i < 10; i++){std::thread th(func);th.detach();}getchar();return 0;
}