首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大牛解答(queue 双端队列)

2013-03-04 
高分求教大牛解答(queue 双端队列)源码片段如下:EnterCriticalSection(&recvStockHeadListCriSection)if(

高分求教大牛解答(queue 双端队列)
源码片段如下:


EnterCriticalSection(&recvStockHeadListCriSection);
if(!lpPerHandleContext->recvStockHeadList.empty())
{
    if(lpPerHandleContext->recvStockHeadList.size() > 1
        && lpPerHandleContext->recvStockHeadList.front().io_data_type == IO_DATA_ACCPET)
    {
 
     }
    
}
LeaveCriticalSection(&recvStockHeadListCriSection); 


断点一步一步走;
recvStockHeadList  非空
recvStockHeadList.size() 等于 5
recvStockHeadList.front()  错误

这是为啥??? 多线程环境!在这个子线程中recvStockHeadListCriSection关键块,在主线程中对变量的赋值lpPerHandleContext 也有一个关键块控制
[解决办法]
错误信息是什么
[解决办法]
如果有其他线程在其他地方修改队列,你这里的CS是保护不了滴~~~~~
[解决办法]
EnterCriticalSection(&recvStockHeadListCriSection);
LeaveCriticalSection(&recvStockHeadListCriSection); 

這個還是封裝到recvStockHeadList裏面更好,

或者是直接找個支持多綫程的queue

[解决办法]
主线程关键块也要用recvStockHeadListCriSection才行。你是不是在主线程里用了另外一个CRITICAL_SECTION。
[解决办法]
引用
EnterCriticalSection(&recvStockHeadListCriSection);
LeaveCriticalSection(&recvStockHeadListCriSection); 

這個還是封裝到recvStockHeadList裏面更好,

或者是直接找個支持多綫程的queue
插入和pop时需要上锁迭代器失效了 多线程操作。。。

热点排行