C++使用互斥物件並無限等待實現執行緒同步

#include #include using namespace std; DWORD WINAPI Func1(LPVOID lpParam);//執行緒函式宣告 DWORD WINAPI Func2(LPVOID lpParam);//執行緒函式宣告 HANDLE mutex;//全域性互斥物件控制代碼int tick = 0;//全域性共享變數,將線上程中使用 //執行緒函式實現DWORD __stdcall Func1(LPVOID lpParam){ while (true) { WaitForSingleObject(mutex, INFINITE);//請求互斥物件,並無限等待,直到互斥物件被釋放 if (tick<100) { tick++; cout << “執行緒函式Func1輸出tick值:” << tick << endl; ReleaseMutex(mutex);//執行業務程式碼完成 ,釋放互斥結物件 } else { ReleaseMutex(mutex);//條件不滿足,釋放互斥結物件 break;//跳出迴圈 } } return 0;} //執行緒函式實現DWORD __stdcall Func2(LPVOID lpParam){ while (true) { WaitForSingleObject(mutex, INFINITE);//請求互斥物件,並無限等待,直到互斥物件被釋放 if (tick < 100) { tick++; cout << “執行緒函式Func2輸出tick值:” << tick << endl; ReleaseMutex(mutex);//執行業務程式碼完成 ,釋放互斥結物件 } else { ReleaseMutex(mutex);//條件不滿足,釋放互斥結物件 break;//跳出迴圈 } } return 0;} int main(){ HANDLE t1, t2; t1 = CreateThread(NULL, 0, Func1, NULL, 0, NULL); t2 = CreateThread(NULL, 0, Func2, NULL, 0, NULL); //建立互斥物件 mutex = CreateMutex(NULL, FALSE, NULL); while (true) { } CloseHandle(t1); CloseHandle(t2); return 0;}