在之前的文章找中讲了批量创建多线程的方法,那么多个子线程创建完成之后,是要做事的,其中涉及最多的就是数据共享。例如多个子线程调用同一个数据,如果只是读取该数据,并不会有任何问题,但如果涉及到写入,就会出问题。
举一个简单的例子:
如果现在有2个子线程,同时对一个数据进行循环加一的操作,我每个子线程都循环100000次,预计结果应该是200000才对。
代码如下:
#include <iostream>
#include <thread>
#include <vector>
using namespace std;
int mucount = 0;//子线程用来循环加一的公共变量
void my_thread()//子线程入口函数
{
for (int i = 0; i < 100000; i++)
{
mucount++;
}
}
int main()
{
thread mythread1(my_thread);
thread mythread2(my_thread)