首页  »   C++ Builder

相干数据共享的方法

网友分享于:2013-01-12  浏览:3次
有关数据共享的方法
我用TIDUDPServer在OnUDPRead中接收数据,把接收的数据都累加进UCHAR *ucData中,接收的数据中有包头和包尾;我现在在线程中把包头和包尾去掉,然后画图,请问怎么在接收数据时不处理数据(就是分析包头和包尾)。就是怎样才能协调好接收和处理同一段数据;现在能同时操作这段内存,数据就乱了。谢谢!
------解决方案--------------------
实际上就是两个线程间的同步问题,这种情况最方便的办法就是使用临界区

/ /初始化
    InitializeCriticalSection(&cs);

// 接收线程
ThreadRecv::OnRead () {
    EnterCriticalSection(&cs);
    //Copy Data To Buffer
    ...
    LeaveCriticalSection(&cs)
}
// 数据处理线程
ThreadProc::DataProcess() {
    EnterCriticalSection(&cs);
    //process data
    ...
    LeaveCriticalSection(&cs)
}

相关解决方案

最新解决方案