C++ std::vector 可以同时处理来自多线程的 push_back 吗?

Posted

技术标签:

【中文标题】C++ std::vector 可以同时处理来自多线程的 push_back 吗?【英文标题】:Can C++ std::vector handle push_back from multithreads at the same time? 【发布时间】:2014-10-13 02:06:18 【问题描述】:

我有一个多线程程序,每个线程都会返回一个字符串,然后它将存储在一个共享的向量容器中。我想知道 std::vector 是否可以处理这种情况,或者我必须使用锁来保护它?

【问题讨论】:

你需要一个互斥体或类似的,向量不是线程安全的。 感谢您的帮助! 【参考方案1】:

没有。除了少数方法,只有 const 方法是并发安全的。

(那些例外是迭代器获取/索引访问方法)

如果任何线程进行这种非const 访问,则任何其他线程都不能进行任何访问。

【讨论】:

得到它!非常感谢。

以上是关于C++ std::vector 可以同时处理来自多线程的 push_back 吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++ STD 容器:std::vector - 有没有办法清除向量并保留存储分配?

参与 std::vector C++

独立 std::threads 的 C++ std::vector

具有来自多个类的值的 C++ std::vector

如何在不循环的情况下将数组的内容复制到 C++ 中的 std::vector?

C++ 指针与 std::vector:对长变量有任何影响吗?