作为前一篇文章http://blog.csdn.net/don_lvsml/article/details/21003835 两个线程的交替执行,现在扩展为三个线程直接的交替执行。
代码如下:
#pragma once
#include<Windows.h>
#include<process.h>
#include<iostream>
using namespace std;
int g_t=0;
HANDLE g_hThreadEvent1;
CRITICAL_SECTION g_csThreadCode1;
HANDLE event0;
HANDLE event1;
HANDLE event2;
bool flag0 = false;
bool flag1 = true;
bool flag2 = false;
unsigned int __stdcall Fun3(void* pPM)
{
int nThreadID=*(int *)pPM;
SetEvent(g_hThreadEvent1);
Sleep(50);
for(int i=0;i<10;++i)
{
if(nThreadID==0)
{
SetEvent(event1);//激活另外一个线程
WaitForSingleObject(event0,INFINITE);
while(!flag0)
Sleep(1);
EnterCriticalSection(&g_csThreadCode1);
//ResetEvent(event0);
cout<<"C";
flag0 = false;
f