?? duelingthreads1.cpp
字號(hào):
#include <windows.h>
#include <stdio.h>
#include <process.h>
unsigned _stdcall ChildThreadProcedure( LPVOID lpMutex) {
// covert parameter to mutex handle...
HANDLE hMutex = (HANDLE) lpMutex;
// save this thread's id...
DWORD dwThreadId = GetCurrentThreadId();
// repeat three times...
for (int n =0; n < 3; n++) {
// wait to acquire the mutex...
DWORD dwResult = WaitForSingleObject( hMutex, INFINITE);
if (dwResult == WAIT_OBJECT_0) {
printf("Thread 0x%08x - acquired the mutex.\n", dwThreadId);
// hold the mutex for one-half second and sleep...
Sleep(500);
printf("Thread 0x%08x - releasing the mutex.\n", dwThreadId);
ReleaseMutex(hMutex);
// wait for one-half second before trying again...
Sleep(500);
}
else {
printf("Thread 0x%08x - error calling WaitForSingleObject().\n", dwThreadId);
return 0xFFFFFFFF;
}
}
return 0;
}
int main(void) {
HANDLE hChildThread[3];
HANDLE hMutex;
// create the mutex...
hMutex = CreateMutex( NULL, FALSE, NULL);
if (hMutex == NULL) {
printf("Primary thread - error calling CreateMutex().\n");
exit(0xFFFFFFFF);
}
// create the child threads...
unsigned uUnusedThreadId;
hChildThread[0] = (HANDLE)_beginthreadex( NULL, 0, ChildThreadProcedure, (void*) hMutex, 0, &uUnusedThreadId);
hChildThread[1] = (HANDLE)_beginthreadex( NULL, 0, ChildThreadProcedure, (void*) hMutex, 0, &uUnusedThreadId);
hChildThread[2] = (HANDLE)_beginthreadex( NULL, 0, ChildThreadProcedure, (void*) hMutex, 0, &uUnusedThreadId);
if (!hChildThread[0] || !hChildThread[1] || !hChildThread[2]) {
printf("Primary thread - error creating child threads.\n");
exit(0xFFFFFFFF);
}
// wait until the child threads have exited...
DWORD dwResult = WaitForMultipleObjects( 3, hChildThread, TRUE, INFINITE);
if (dwResult != WAIT_OBJECT_0) {
printf("Primary thread - error calling WaitForMultipleObjects().\n");
exit(0xFFFFFFFF);
}
// clean up all handles...
CloseHandle(hMutex);
CloseHandle(hChildThread[0]);
CloseHandle(hChildThread[1]);
CloseHandle(hChildThread[2]);
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -