我有一个线程用回叫调用来填充双端队列。该线程首先锁定互斥锁,然后再执行其操作。
第二个线程正在使用原始双端队列的双端队列指针,并且刚刚读取它,而在读取双端队列时却遇到错误“无法取消引用值初始化的双端队列迭代器”。我已经检查过了,并且没有超出双端队列的范围。
这是伪代码:
// Thread 1
deque<float> main_deque;
void FillDeque()
{
MutexLock Lock(mutex);
for (size_t i = 0; i < main_deque.size(); i++)
{
main_deque.push_back(-10.0);
}
}
// Thread 2
void ReadDeque(deque<float> *main_deque)
{
for (size_t i = 0; i < main_deque->size(); i++)
{
float a = (*main_deque)[i];
}
}
编辑:如果我将双端队列更改为vector,则一切正常。