//Thread.h
#include <windows.h>
#include <stdio.h>
CRITICAL_SECTION g_cs;
DWORD WINAPI child_thread(LPVOID lpParameter);
class CThread
{
public:
LPVOID lpParameters ;
void run(LPVOID lpParameter);
void start(LPVOID lpParameters)
{
hThread = CreateThread(NULL,0,child_thread,this,0,NULL);
this->lpParameters=lpParameters;
}
~CThread()
{
CloseHandle(hThread);
}
private:
HANDLE hThread;
};
DWORD WINAPI child_thread(LPVOID lpParameter)
{
((CThread *)lpParameter)->run(((CThread *)lpParameter)->lpParameters);
return 0;
}
//Thread.cpp
include "thread.h"
#include <iostream.h>
void CThread::run (LPVOID lpParameter)
{
cout<<"xiancheng"<<endl;
int *a;
a=(int *)lpParameter;
for(int i=0;i<50;i++)
{
EnterCriticalSection(&g_cs); // 同步方法:进入关键代码区
printf("%d,%d\n",*a,i);
LeaveCriticalSection(&g_cs); // 同步方法:退出关键代码区
}
}
void main()
{
InitializeCriticalSection(&g_cs);
CThread m_Thd[10];
int j[10];
for(int i=0;i<3;i++)
{
j[i]=i;
m_Thd[i].start(&j[i]) ;
}
Sleep(100000);
DeleteCriticalSection(&g_cs);
}