www.pudn.com > LiServer.rar > CMsgAnalyse.cpp


#include "CMsgAnalyse.h" 
 
void CMsgAnalyse::FreeMsgObj(Msg * obj) 
{ 
   HeapFree(GetProcessHeap(), 0, obj->buf); 
   HeapFree(GetProcessHeap(), 0, obj); 
} 
 
DWORD WINAPI CMsgAnalyse::MsgAnalyseThread(LPVOID lpParam) 
{ 
	Msg * obj; 
	 
 
	CMsgAnalyse *v= (CMsgAnalyse *) lpParam; 
	while(1) 
	{ 
		EnterCriticalSection(&gRecvCS); 
		if (gRecvMsg.size() > 0) 
		{ 
			obj = gRecvMsg[0]; 
			v->FreeMsgObj(obj);	 
			vector::iterator iter = gRecvMsg.begin(); 
			gRecvMsg.erase(iter); 
		} 
		LeaveCriticalSection(&gRecvCS); 
	} 
	return 0; 
} 
 
void CMsgAnalyse::StartThread() 
{ 
	for(int i = 0; i < 2 ; i++) 
	{ 
		CreateThread(NULL, 0, MsgAnalyseThread, this, 0, NULL); 
	} 
}