0
這裏是我的情況的簡化版本:我需要一個指針向量上的互斥量嗎?
void AppendToVector(std::vector<int>* my_vector) {
for (int i = 0; i < 100; i++) {
my_vector->push_back(i);
}
}
void CreateVectors(const int num_threads) {
std::vector<std::vector<int>* > my_vector_of_pointers(10);
ThreadPool pool(num_threads);
for (for int i = 0; i < 10; i++) {
my_vector_of_pointers[i] = new std::vector<int>();
pool.AddTask(AppendToVector,
&my_vector_of_pointers[i]);
}
}
我的問題是我是否需要把AppendToVector互斥鎖多線程運行此是什麼時候?我的直覺告訴我,我不必因爲沒有兩個線程訪問相同數據的可能性,但我不完全有信心。
操縱如果每個線程都有自己的向量沒有競爭條件的空間不需要互斥。 – dtech 2014-11-14 20:00:06