64,654
社区成员
发帖
与我相关
我的任务
分享
#include<windows.h>
#include<winbase.h>
#include<stdio.h>
#include <process.h>
HANDLE g_hMutex = CreateMutex(NULL, FALSE, "mutex");
unsigned int WINAPI ThreadProcOne(LPVOID lpVoid)
{
int i;
for(i = 0; i < 4; ++i)
{// 走到此可继续招待下面的语句,那说明内核对象处于触发状态.
// 这里不明白的是怎么知道内核对象到底处于什么状态.
WaitForSingleObject(g_hMutex, INFINITE);
printf("Thread1:%d\n", i);
ReleaseMutex(g_hMutex);
}
return 0;
}
unsigned int WINAPI ThreadProcTwo(LPVOID lpVoid)
{
int i;
for(i = 0; i < 4; ++i)
{
WaitForSingleObject(g_hMutex, INFINITE);
printf("Thread2:%d\n", i);
ReleaseMutex(g_hMutex);
}
return 0;
}
int main(int argc, char *argv[])
{
unsigned int threadID;
//InitializeSRWLock(&g_srwlock);
// CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProcOne, NULL, 0, NULL);
// CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProcTwo, NULL, 0, NULL);
HANDLE handle1 = (HANDLE)_beginthreadex(NULL, 0, ThreadProcOne, NULL, 0, &threadID);
HANDLE handle3 = (HANDLE)_beginthreadex(NULL, 0, ThreadProcOne, NULL, 0, &threadID);
HANDLE handle2 = (HANDLE)_beginthreadex(NULL, 0, ThreadProcTwo, NULL, 0, &threadID);
Sleep(1000);
//getchar();
//system("PAUSE");
return 0;
}