struct BUFFER_ITEM {
LPBYTE Buffer;
HANDLE hFinishDone;//标识数据处理完成
};
BUFFER_ITEM BufferArray[MAXBUFQUEUE];
//初始化
for(int i=0;i
Buffer = new BYTE[...];
hFinishDone = CreateEvent( NULL,FALSE,TURE,NULL ); //开始有信号
}
采集线程
while(1)
{
for(i=0;i
if ( WAIT_OBJECT_0 ==WaitForSingleObject(
BufferArray[i].hFinishDone,0 )//是否处理完,没有则下一个
{
采集数据
PostThreadMessage(idThreadDataProcess,UM_SETDATA,
(WPARAM)&(BufferArray[i]),0 );
}
}
}
处理线程
while(GetMessage(&msg,NULL,0,0))
{
if(msg.message==UM_SETDATA)
{
BUFFER_ITEM* lpBuffer = (BUFFER_ITEM*)msg.wParam;
处理数据
SetEvent(lpBuffer->hFinishDone);//数据处理完,重设有信号
continue;
}
}