迭代包含concurrent_queue <string> *的std :: vector并打印字符串

时间:2016-01-15 14:06:30

标签: c++ multithreading c++11 visual-c++ vector

我正在尝试调试多线程系统,为此我需要记录向量的内容一段时间(1小时)。 我想打印vector<concurrent_queue<MyObject>*> myContainer中包含的所有字符串,我尝试了以下内容:

for (auto q : myContainer)
    for(concurrent_queue<MyObject>::iterator i = q->unsafe_begin(); i != q->unsafe_end(); ++i)
        cout << i->toString()<<endl;

但是我在Visual Studio中运行了几次后得到了一个调试断言:

msvcp110d.dll!Concurrency::details::_Concurrent_queue_iterator_rep::choose(unsigned __int64 k) Line 339 C++

我认为这是由竞争条件导致的访问违规造成的。

如何在没有问题的情况下正确迭代此类结构?

0 个答案:

没有答案
相关问题