Обмен compare_exchange_strong в C++
Запись при совпадении делает compare_exchange_strong: операция сравнивает текущее значение с ожидаемым и при совпадении записывает новое.
Поток попробует заменить 0 на 5,
главный выведет флаг успеха и итог:
#include <atomic>
#include <iostream>
#include <thread>
int main() {
std::atomic<int> slot{0};
bool ok = false;
std::thread worker([&]() {
int expected = 0;
ok = slot.compare_exchange_strong(expected, 5);
});
worker.join();
std::cout << ok << " " << slot.load() << "\n";
return 0;
}
С compare_exchange_strong замените 1 на 2 в std::atomic<int> из потока. Выведите булев итог и значение.