int data = 0;//多个线程同时访问一个变量,同时写入,会冲突
//一个变量是线程安全,多线程同时读写没有误差
//使用原子变量解决线程冲突问题
DWORD WINAPI runX(void *p)
{
for (int i = 0; i < 10000; i++)
{
//InterlockedIncrement(&data);//精确 操作完成了后续才能继续
InterlockedExchangeAdd(&data, 1);//精确
}
}
//原子操作解决多线程安全
void main()
{
HANDLE hd[50];
for (int i = 0; i < 50;i++)
{
hd[i] = CreateThread(NULL, 0, runX, NULL, 0, NULL);
}
WaitForMultipleObjects(50, hd, TRUE, INFINITE);
printf("%d", data);
system("pause");
}
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接