我目前正在处理代码中某处的数据竞争,并且似乎无法确定究竟是在哪里发生这种情况。右手任务的意思是
Iterator iter = destination; //assign local iterator from dest iterator
对于上下文,该函数将数据集拆分为块并并行执行每个块。每个块都将执行lambda函数,并且不保证块以任何顺序执行。它们可能同时运行,也可能在其他运行之前运行。 lambda的开头有上面的行,所以:
[dest](Data &data, Iterator part_begin, std::size_t part_size) mutable
{
Iterator iter = dest;
std::advance(iter, get<0>(data)); //use this iter for the algorithm
// ...
// ...
}
这是安全的操作吗?我知道迭代器值访问不是int
之类的原子操作,所以我不确定它是否有效。