有点疑惑,请大家帮忙
我双核运行下面程序,有时候这样的结果Thread1 is running
Thread1 is running
Thread2 is running
其中“Thread1 is running”出现2次,是怎么回事??但这种情况少见,运行多次偶尔会有这样的情况!!
程序代码:
#include <windows.h> #include <iostream.h> DWORD WINAPI Fun1Proc(LPVOID lpParameter); DWORD WINAPI Fun2Proc(LPVOID lpParameter); HANDLE hMutex; void main() { HANDLE hThread1; HANDLE hThread2; hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL); hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL); CloseHandle(hThread1); CloseHandle(hThread2); hMutex=CreateMutex(NULL,TRUE,"tickets"); if(hMutex) { if(ERROR_ALREADY_EXISTS==GetLastError()) { cout<<"only instance can run!"<<endl; return; } } WaitForSingleObject(hMutex,INFINITE); ReleaseMutex(hMutex); ReleaseMutex(hMutex); Sleep(4000); } DWORD WINAPI Fun1Proc( LPVOID lpParameter // thread data ) { WaitForSingleObject(hMutex,INFINITE); cout<<"thread1 is running"<<endl; return 0; } DWORD WINAPI Fun2Proc( LPVOID lpParameter // thread data ) { WaitForSingleObject(hMutex,INFINITE); cout<<"thread2 is running"<<endl; return 0; }