Метод load
Метод load класса atomic читает текущее значение атомарной переменной и возвращает его. Операция является атомарной, то есть никакой другой поток не может изменить значение переменной в момент чтения. Первым параметром метод принимает порядок памяти (memory order), который определяет, какие ограничения на переупорядочивание операций накладываются. По умолчанию используется memory_order_seq_cst.
Синтаксис
atomic<T> obj;
obj.load(order);
Пример
Давайте создадим атомарную переменную со значением 42 и прочитаем её с помощью метода load:
#include <iostream>
#include <atomic>
using namespace std;
int main()
{
atomic<int> obj(42);
int res = obj.load();
cout << res << endl;
return 0;
}
Результат выполнения кода:
42
Пример
Давайте явно укажем порядок памяти memory_order_relaxed при чтении значения:
#include <iostream>
#include <atomic>
using namespace std;
int main()
{
atomic<int> obj(12345);
int res = obj.load(memory_order_relaxed);
cout << res << endl;
return 0;
}
Результат выполнения кода:
12345
Пример
Давайте прочитаем значение атомарной строки и выведем его на экран:
#include <iostream>
#include <atomic>
#include <string>
using namespace std;
int main()
{
atomic<string> obj("abcde");
string res = obj.load();
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abcde"
Смотрите также
-
класс
atomic,
который представляет атомарную переменную -
метод
store,
который записывает значение в атомарную переменную -
метод
exchange,
который заменяет значение атомарной переменной -
метод
compare_exchange_strong,
который сравнивает и обменивает значение