HANDLE mutex = NULL;
int num = 0;
DWORD WINAPI add(void *p)
{
WaitForSingleObject(mutex, INFINITE);
for (int i = 0; i < 100000; i++)
{
num++;
}
ReleaseMutex(mutex);
}
//临界区 超过64个线程就over了、互斥量用于解决线程冲突
void main()
{
mutex = CreateMutex(NULL, FALSE, NULL);//创建互斥
if (mutex == NULL)
{
}
HANDLE hd[64];//线程互斥,同一个互斥量,只能解决64个 服务器上没这个限制
for (int i = 0; i < 64; i++)
{
hd[i] = CreateThread(NULL, 0, add, NULL, 0, NULL);
if (hd[i] == NULL)
{
}
}
WaitForMultipleObjects(64, hd, TRUE, INFINITE);
printf("%d", num);
for (int i = 0; i < 64; i++)//关闭每一个线程的资源
{
CloseHandle(hd[i]);
}
CloseHandle(mutex);//关闭排斥 销毁
system("pause");
}
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接