关于多线程编程请参考http://blog.csdn.net/morewindows/article/details/17488865 第二部分
本文实现两个线程的交替执行,一个线程输出奇数,另一个输出偶数,一定要是交替执行。
这里使用的是事件event和临界区criticalsection来实现,其中event用于主线程和子线程之间的同步,而criticalsection用于子线程之间的互斥。
代码如下,其中代码中间有详细的注释。
#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;
bool flag0 = false;
bool flag1 = true;
unsigned int __stdcall Fun2(void* pPM)
{
int nThreadID=*(int *)pPM;
SetEvent(g_hThreadEvent1);
Sleep(50);
for(int i=0;i<20;++i)
{
if(nThreadID==0)
{
//Sleep(50);
SetEvent(event1);//激活另外一个线程
WaitForSingleObject(event0,INFINITE);
while(