您的位置:首页 > 其它

线程4:原子变量与原子操作

2015-08-21 17:26 176 查看
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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  原子变量