多线程类

//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);
}

你可能感兴趣的:(多线程类)