Метод store
Метод store класса atomic выполняет атомарную запись значения в объект. Это означает, что операция изменения данных происходит неделимо: никакой другой поток не сможет увидеть промежуточное состояние или помешать записи. Первым параметром метод принимает новое значение, которое нужно сохранить, а вторым (необязательным) - порядок доступа к памяти.
Синтаксис
atomic_object.store(value, memory_order)
Пример
Давайте создадим атомарную переменную и запишем в нее число 123:
#include <iostream>
#include <atomic>
using namespace std;
int main()
{
atomic<int> a(0);
a.store(123);
cout << a.load() << endl;
return 0;
}
Результат выполнения кода:
123
Пример
Давайте используем метод store для безопасной записи строки в атомарный указатель. Так как atomic для сложных типов обычно используется с указателями, рассмотрим пример:
#include <iostream>
#include <atomic>
using namespace std;
int main()
{
int x = 5;
int y = 10;
atomic<int*> ptr(&x);
ptr.store(&y);
cout << *ptr.load() << endl;
return 0;
}
Результат выполнения кода:
10
Смотрите также
-
класс
atomic,
который представляет собой атомарный тип данных -
метод
load,
который читает значение атомарной переменной -
метод
exchange,
который заменяет значение и возвращает старое -
метод
memory_order,
который определяет порядок доступа к памяти