一,C++
//.h文件/
HANDLE thread_Socket[50]; //线程个数
DWORD WINAPI ServerPreDeal(LPVOID lpParameter);
struct MassageToStruct
{
CdwcjtestDlg *cStcmylog;
int ConnectID;
MassageToStruct()
{
cStcmylog = NULL;
ConnectID=0;
}
}readcom[64];
-------------------------------------------------------------------
/.CPP文件///
//启动
unsigned long id;
int ConnectID;
ConnectID= 0;
memset(readcom,0,sizeof(MassageToStruct));
for(int i = 0 ; i <g_ThreadNum; i ++ )
{
ConnectID = i;
//if(thread_Socket[ConnectID] == NULL)
{
readcom[ConnectID].ConnectID = ConnectID+1;
readcom[ConnectID].cStcmylog = this;
thread_Socket[ConnectID]=CreateThread(NULL, 0, ServerPreDeal,(LPVOID)&readcom[ConnectID], 0, &id);
if (thread_Socket[ConnectID] == NULL)
{
memset(cReadBuff,0,sizeof(cReadBuff));
sprintf(cReadBuff,"线程%d启动失败!",ConnectID);
log(cReadBuff,1,ConnectID);
return;
}
}
}
DWORD WINAPI ServerPreDeal(LPVOID lpParameter)
{
MassageToStruct stmassage;
memset(&stmassage,0,sizeof(MassageToStruct));
stmassage.cStcmylog = ((MassageToStruct*)lpParameter)->cStcmylog;
stmassage.ConnectID =((MassageToStruct*)lpParameter)->ConnectID;
char prbuff[256];
memset(prbuff,0,sizeof(prbuff));
sprintf(prbuff,"%s%d%s","接受线程",stmassage.ConnectID,"启动");
stmassage.cStcmylog->log(prbuff,1,stmassage.ConnectID+1);
while(1)
{
memset(prbuff,0,sizeof(prbuff));
sprintf(prbuff,"%s%d%s","线程",stmassage.ConnectID,"执行");
stmassage.cStcmylog->log(prbuff,1,stmassage.ConnectID+1);
Sleep(3000);
}//end wile
free(lpParameter);
}
//关闭线程///
DWORD ExitCode;
for(int ConnectID=0;ConnectID < g_ThreadNum;ConnectID++)
{
GetExitCodeThread(thread_Socket[ConnectID],&ExitCode);
TerminateThread(thread_Socket[ConnectID],ExitCode);
thread_Socket[ConnectID]=NULL;
}