Первый пример:
Потоки 1..N увеличиваются:
Код: Выделить всё
while (...) {
if (...) {
count.fetch_add(1, memory_order_relaxed);
}
}
Код: Выделить всё
int main() {
launch_workers();
join_workers();
cout
[code]while(!stop.load(memory_order_relaxed)) {
if (...) {
dirty.store(true, memory_order_release)
}
}
Код: Выделить всё
int main() {
launch_workers();
stop = true;
join_workers();
if (dirty.load(memory_order_acquire)) {
// read published data to clean up
}
}
Я думал, что stop.store(true, Memory_order_relaxed) не следует переупорядочивать в этом примере.
Подробнее здесь: https://stackoverflow.com/questions/786 ... utter-talk