MyException - 我的异常网
当前位置:我的异常网» C++ Builder » 相干数据共享的方法

相干数据共享的方法

www.MyException.Cn  网友分享于: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)
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有