C++ tbb::变量范围的并行_
我正在尝试我的第一个tbb::parallel_for循环,我需要一些帮助。我似乎很好地完成了循环,但我不确定如何在全局范围内设置变量“test”。在循环期间输出,我可以看到值是正确的,但一旦我退出循环并再次输出“test”,值为0。请帮忙C++ tbb::变量范围的并行_,c++,tbb,C++,Tbb,我正在尝试我的第一个tbb::parallel_for循环,我需要一些帮助。我似乎很好地完成了循环,但我不确定如何在全局范围内设置变量“test”。在循环期间输出,我可以看到值是正确的,但一旦我退出循环并再次输出“test”,值为0。请帮忙 int test =0; tbb::parallel_for( tbb::blocked_range<std::vector<MeshData>::iterator>(meshData.begin(), meshData.end())
int test =0;
tbb::parallel_for(
tbb::blocked_range<std::vector<MeshData>::iterator>(meshData.begin(),
meshData.end()),
[&] (tbb::blocked_range<std::vector<MeshData>::iterator> meshData) {
for (std::vector<MeshData>::iterator it = meshData.begin(); it != meshData.end(); it++) {
test = (*it).posX;
cout << test << endl; // has correct value
}
});
cout << test << endl; // has incorrect value value
int测试=0;
tbb::用于(
tbb::阻塞的_范围(meshData.begin(),
meshData.end()),
[&](tbb::阻塞的数据){
对于(std::vector::iterator it=meshData.begin();it!=meshData.end();it++){
test=(*it).posX;
您是否尝试通过捕获lambda来进行测试
,尝试在括号中添加&test
。虽然我尝试了,但仍然没有成功,我缺少什么:(称为数据竞争)。由于C++无法使用常规类型的变量来跨线程通信,所以程序不正确。向共享变量写入需要同步,毕竟效率低下。请看<代码> TBB::RealthORIX < /COD>如果需要还原为单个值。@ Anton看起来像是一个A.公正的结论是,我的简单例子确实有效