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::threads 的 C++ std::vector