![](/img/trans.png)
[英]How to avoid `deque iterator not dereferencable` in a std::deque ? Locks?
[英]'deque iterator not dereferencable` while doing std::deque->front()
以下代碼段導致斷言“不可取消deque迭代器”和異常:
if (data[n].stateFlagQueue->empty()) cstate=0;
else
{
cstate=data[n].stateFlagQueue->front();
if (data[n].stateFlagQueue->size()>1) data[n].stateFlagQueue->pop();
}
斷言發生在data [n] .stateFlagQueue-> front()上,而stateflagQueue的大小為3,因此有足夠的可用數據。 上面顯示的整個代碼是由互斥鎖保護的,對於在自己的線程中運行並用數據填充stateFlagQueue的代碼也是如此:
if ((data->stateFlagQueue->empty()) ||
(data->stateFlagQueue->back()!=data->m_response.cstate))
data->stateFlagQueue->push(data->m_response.cstate);
那么...怎么可能發生這種異常呢?
謝謝!
好了,解決了,這之間發生了錯誤的互斥鎖解鎖,從而導致了此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.