【多线程】两个线程 交替执行

来源:互联网 发布:mac电脑密码不对 编辑:程序博客网 时间:2024/05/18 06:23
#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;}


以上是两个子线程之间交替。主线程闲着。

 

下面是主线程和一个子线程之间交替

#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;}


 各位大神,如果我想只输出10次呢?怎么改呢?

 

原创粉丝点击