假设有以下情景:
在运行
std::atomic<int> values[10];
std::size_t indices[10];
void sort() {
std::iota(indices, indices+10, 0);
std::sort(indices, indices+10,
[&](size_t lhs, size_t rhs) { return values[lhs] < values[rhs]; });
}
在运行
sort()
时,另一个线程正在更改values
。这只会导致索引在排序后不正确,还是实际上是未定义的行为?