大牛解答(queue 双端队列)
高分求教大牛解答(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。
[解决办法]插入和pop时需要上锁迭代器失效了 多线程操作。。。