#define MAXBUFQUEUE 8
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;
}
}
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;
}
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10697500/viewspace-608768/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10697500/viewspace-608768/