16,548
社区成员




//互斥同步
int WorkID = 10;
const int MAXNUM = 100;
HANDLE hMutex;
DWORD __stdcall ThreadOne( LPVOID lparam )
{
for(;;)
{
WaitForSingleObject( hMutex, INFINITE );
if(WorkID < MAXNUM)
{
WorkID += 1;
Sleep(1000);
printf("WorkID: %i\n",WorkID);
}
ReleaseMutex(hMutex);
}
return 0;
}
DWORD __stdcall ThreadTwo( LPVOID lparam )
{
for(;;)
{
WaitForSingleObject( hMutex, INFINITE );
if(WorkID < MAXNUM)
{
WorkID += 1;
printf("WorkID: %i\n",WorkID);
Sleep(1000);
}
ReleaseMutex(hMutex);
}
return 0;
}
void Main()
{
HANDLE hThread1, hThread2;
//创建线程后并立即执行
hThread1 = ::CreateThread(NULL,0,ThreadOne,NULL,0,NULL);
hThread2 = ::CreateThread(NULL,0,ThreadTwo,NULL,0,NULL);
//为什么在创建线程之后再创建互斥对象? 此时的ThreadOne和ThreadTwo中的hMutex
//应该还是NULL吧!
hMutex = CreateMutex(NULL,false,"mutex");
CloseHandle( hThread1 );
CloseHandle( hThread2 );
while(true)
{
;
}
}