#include <iostream>#include <windows.h>using namespace std;HANDLE hMutex;DWORD WINAPI Fun(LPVOID lpParamter){ while(1){WaitForSingleObject(hMutex, INFINITE);cout<<"A"<<endl; Sleep(1000);ReleaseMutex(hMutex); }return 0;}DWORD WINAPI Fun1(LPVOID lpParamter){while(1) { WaitForSingleObject(hMutex, INFINITE); cout<<"B"<<endl; Sleep(1000); ReleaseMutex(hMutex);}return 0;}int main(){HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);hMutex = CreateMutex(NULL, FALSE, (LPWSTR)"screen");CloseHandle(hThread);HANDLE hThread1 = CreateThread(NULL, 0, Fun1, NULL, 0, NULL);CloseHandle(hThread1);while(1);return 0;}
The preceding two subthreads alternate. The main thread is idle.
The following describes the alternation between the main thread and the sub-thread.
#include <iostream>#include <windows.h>using namespace std;HANDLE hMutex;DWORD WINAPI Fun(LPVOID lpParamter){while(1) { WaitForSingleObject(hMutex, INFINITE); Sleep(1000); cout<<"Fun display!"<<endl; ReleaseMutex(hMutex);}}int main(){HANDLE hThread = CreateThread(NULL, 0, Fun, NULL, 0, NULL);hMutex = CreateMutex(NULL, FALSE, (LPWSTR)"screen");CloseHandle(hThread);while(1) { WaitForSingleObject(hMutex, INFINITE); Sleep(1000); cout<<"main display!"<<endl; ReleaseMutex(hMutex);}return 0;}
What if I want to output only 10 times? How to change it?