我在c ++应用程序中具有以下功能:
每个线程使用自己的迭代器来迭代向量元素。这意味着,一个迭代器只能由一个线程移动。
问题是:这是否是线程安全的,同时使用多个线程迭代std :: vector,转而通过专用迭代器(每个脚本为此目的使用自己的迭代器)。
我害怕的是,在STL深处,可能会导致一些故障(也许我是偏执狂)。我测试了这种方法,看起来很有效,但是想从专家那里得到一些反馈。
答案 0 :(得分:2)
STL不是MT安全的。请查看Introductory-STL-tutorial - 特别是“多线程问题”一章。在您的情况下,线程2和3可以竞争相同的向量元素 - 因此您需要在每个元素中使用互斥锁。