互斥量只能用来互斥,无法做同步
#include <iostream>
#include <Windows.h>
int g_val = 0;
HANDLE mutex;
DWORD WINAPI SonThreadFunc(LPVOID param)
{
WaitForSingleObject(mutex, INFINITE);
std::cout << g_val++ << std::endl;
ReleaseMutex(mutex);
return 0;
}
int main()
{
mutex = CreateMutex(NULL, FALSE, NULL);//第二个参数为FALSE表示,mutex处于激发状态。为TRUE表示未激发状态,并被当前线程拥有
HANDLE ths[5];
for (size_t i = 0; i < 5; i++)
{
ths[i] = CreateThread(NULL, 0, SonThreadFunc, NULL, 0, NULL);
}
WaitForMultipleObjects(5, ths, TRUE, INFINITE);
CloseHandle(mutex);
for (size_t i = 0; i < 5; i++)
{
CloseHandle(ths[i]);
}
std::cout << "Hello World!\n";
}