有关数据共享的方法
我用TIDUDPServer在OnUDPRead中接收数据,把接收的数据都累加进UCHAR *ucData中,接收的数据中有包头和包尾;我现在在线程中把包头和包尾去掉,然后画图,请问怎么在接收数据时不处理数据(就是分析包头和包尾)。就是怎样才能协调好接收和处理同一段数据;现在能同时操作这段内存,数据就乱了。谢谢!
[解决办法]
实际上就是两个线程间的同步问题,这种情况最方便的办法就是使用临界区
/ /初始化
InitializeCriticalSection(&cs);
// 接收线程
ThreadRecv::OnRead () {
EnterCriticalSection(&cs);
//Copy Data To Buffer
...
LeaveCriticalSection(&cs)
}
// 数据处理线程
ThreadProc::DataProcess() {
EnterCriticalSection(&cs);
//process data
...
LeaveCriticalSection(&cs)
}