C++ 在向量中写入线程安全

C++ 在向量中写入线程安全,c++,multithreading,stl,vector,c++11,C++,Multithreading,Stl,Vector,C++11,可能重复: 如果我有这段代码: std::vector<std::vector<double>> a; std::vector<double> b; // init a,b.... std::vector<double> c; parallel_for_each (a.begin(); a.end; [&c, &b] (std::vector<double>& aux) { c.push_back(f

可能重复:

如果我有这段代码:

std::vector<std::vector<double>> a;
std::vector<double> b;

// init a,b....

std::vector<double> c;
parallel_for_each (a.begin(); a.end; [&c, &b] (std::vector<double>& aux) {
   c.push_back(foo(b, aux));
});
std::向量a;
std::载体b;
//初始a,b。。。。
std::向量c;
每个(a.begin();a.end;[&c,&b](std::vector&aux)的并行{
c、 推回(foo(b,aux));
});

在向量中添加这样的元素是线程安全的?

否,
std::vector
不是线程安全的。您必须提供同步。

否,
std::vector
不是线程安全的。您必须提供同步。

每个并行\u来自哪里?如果它来自微软的并发库,只需使用concurrent_vector即可。

每个_的并行_来自哪里?如果它来自微软的并发库,只需使用concurrent_vector即可。

使用互斥实现线程安全。@WhozCraig:我不同意这是一个完全重复的问题——这个问题有更严格的条件,因此需要更仔细的分析来确定线程安全性(或缺乏线程安全性)。这个问题要简单得多,导致了一个更简单、更清晰的答案。使用互斥来确保线程安全。@WhozCraig:我不同意这是一个完全重复的问题——这个问题有更严格的条件,因此需要更仔细的分析来确定线程安全性(或缺乏)。这一个更简单,导致一个更简单,更明确的答案。