我有一个并行代码,它进行一些计算,然后将一个 double 添加到一个循环外的 double 变量中。我尝试使用 std::atomic 但它不支持对 std::atomic < double > 变量的算术运算。
double dResCross = 0.0;
std::atomic<double> dResCrossAT = 0.0;
Concurrency::parallel_for(0, iExperimentalVectorLength, [&](size_t m)
{
double value;
//some computation of the double value
atomic_fetch_add(&dResCrossAT, value);
});
dResCross += dResCrossAT;
简单地写
dResCross += value;
显然是胡说八道。我的问题是,如何在不使代码串行的情况下解决这个问题?