Iterators右手值赋值操作是原子的吗?

时间:2015-01-28 07:10:30

标签: c++ c++11 lambda parallel-processing

我目前正在处理代码中某处的数据竞争,并且似乎无法确定究竟是在哪里发生这种情况。右手任务的意思是

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之类的原子操作,所以我不确定它是否有效。

0 个答案:

没有答案