如何带参数启动线程?
jukyy 2003-04-14 10:34:22 是这样的,我要用多线程与十多个串口进行实时通信,如果每个串口对应写一个线程,那么要写十几个线程。而用同一个线程(同一段代码)去启动十多次的话,必须每次分别对应不同的串口,这个问题如何实现,请大虾们指点。一定给分!
以下是线程的Execute方法:
void __fastcall ThreadComm::Execute()
{
DWORD dwEvtMask,dwTransfer;
OVERLAPPED os;
memset(&os,0,sizeof(OVERLAPPED));
os.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if(!SetCommMask(fmain->COMX->hCom,EV_RXCHAR|EV_TXEMPTY)) //这里用到了主FORM的对象(其中通讯对象实例COMX = new TCommunication();HANDLE hCom;)
{
MessageBox(NULL,"设置通信设备控制块数据结构操作异常!","错误",MB_OK);
return;
}
while(!Terminated)
{
dwEvtMask=0;
if (!WaitCommEvent(fmain->COMX1->hCom, &dwEvtMask, &os)) //也用到了
{
if(GetLastError()==ERROR_IO_PENDING)
{
if(GetOverlappedResult(fmain->COMX1->hCom,&os,&dwTransfer,TRUE))//;
os.Offset+=dwTransfer;
}
}
if ((dwEvtMask & EV_RXCHAR)==EV_RXCHAR)
{
recvBuffer=fmain->COMX1->ReceiveProcess();
if(!recvBuffer.IsEmpty())
{
Synchronize(AddToMemo);
}
}
if((sendCount>0)&&((dwEvtMask & EV_TXEMPTY)==EV_TXEMPTY))
{
SendOneByte();
}
}
MessageBox(NULL,"线程终止!","信息",MB_OK);
}
在主进程中我想实现
pThread1 = new ThreadComm(false);
pThread2 = new ThreadComm(false);
pThread3 = new ThreadComm(false);
……
pThread18 = new ThreadComm(false);
这样的模式,不知可行否?或者有没有其他的方法?