#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我不知道该怎么改了