#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;
HANDLE gEvent;
DWORD WINAPI FuncA(LPVOID lpParameter)
{
for(int i = 0;i<5;i++)
{
WaitForSingleObject(gEvent,INFINITE);
cout << "A";
Sleep(20);
SetEvent(gEvent);
}
return 0;
}
DWORD WINAPI FuncB(LPVOID lpParameter)
{
for(int i = 0;i<5;i++)
{
WaitForSingleObject(gEvent,INFINITE);
cout << "B";
Sleep(20);
SetEvent(gEvent);
}
return 0;
}
int main()
{
gEvent =CreateEvent(NULL,false,true,NULL); //,无信号 手动置位,未激发状态
HANDLE hThread1
=CreateThread(NULL,0,FuncA,NULL,CREATE_SUSPENDED,NULL);
ResumeThread(hThread1);
HANDLE hThread2
=CreateThread(NULL,0,FuncB,NULL,CREATE_SUSPENDED,NULL);
Sleep(0); // 让线程1先执行
ResumeThread(hThread2);
Sleep(2000);
return 0;
}
这个试试吧,我在本地跑了10次能打印ABABAB....,但是如果是打印ABCABCABC我不知道该怎么改了