我在一个项目上使用 C++11,这是一个函数:
void task1(int* res) {
*res = 1;
}
void task2(int* res) {
*res = 2;
}
void func() {
std::vector<int> res(2, 0); // {0, 0}
std::thread t1(task1, &res[0]);
std::thread t2(task2, &res[1]);
t1.join();
t2.join();
return res[0] + res[1];
}
功能就是这样。您会看到有一个std::vector
,它存储了线程的所有结果。
我的问题是:会std::vector
导致虚假分享吗?如果可以,有什么方法可以避免在使用std::vector
存储线程结果时出现错误共享?