Пространства имён
Варианты
Действия

std::atomic

Материал из cppreference.com
< cpp‎ | atomic
 
 
 
std::atomic
Член функций
Оригинал:
Member functions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
atomic::atomic
atomic::operator=
atomic::is_lock_free
atomic::store
atomic::load
atomic::operator T
atomic::exchange
atomic::compare_exchange
Специализированные функции-члены
Оригинал:
Specialized member functions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
atomic::fetch_add
atomic::fetch_sub
atomic::fetch_and
atomic::fetch_or
atomic::fetch_xor
atomic::operator++
atomic::operator++(int)
atomic::operator--
atomic::operator--(int)
atomic::operator+=
atomic::operator-=
atomic::operator&=
atomic::operator|=
atomic::operator^=
 
Определено в заголовочном файле <atomic>
template< class T >
struct atomic;
(1) (начиная с C++11)
template<>
struct atomic<Integral>;
(2) (начиная с C++11)
template< class T >
struct atomic<T*>;
(3) (начиная с C++11)

Каждая специализация шаблона std::atomic определяет атомарный тип. Только объекты атомарных С++ типов могут безопасно использоваться в нескольких потоках одновременно. Когда один поток сохраняет данные в объекте атомарного типа, а другой хочет их прочитать, поведение программы определено стандартом.

Доступ к атомарным переменным может использоваться для синхронизации потоков и для упорядочивания доступа к неатомарным переменным, тогда атомарные могут играть роль семафоров (см. std::memory_order).

Стандартная библиотека предоставляет специализации std::atomic для следующих типов:

1) Одна специализация для типа bool и её typedef. Она имеет стандартное размещение (standard layout), тривиальный конструктор по умолчанию, тривиальный деструктор и также поддерживает обобщённый синтаксис инициализации

Typedef имя
Оригинал:
Typedef name
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Full specialization
std::atomic_bool std::atomic<bool>

2) Специализации и typedef'ы для целочисленных типов:

Typedef имя
Оригинал:
Typedef name
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Full specialization
std::atomic_char std::atomic<char>
std::atomic_schar std::atomic<signed char>
std::atomic_uchar std::atomic<unsigned char>
std::atomic_short std::atomic<short>
std::atomic_ushort std::atomic<unsigned short>
std::atomic_int std::atomic<int>
std::atomic_uint std::atomic<unsigned int>
std::atomic_long std::atomic<long>
std::atomic_ulong std::atomic<unsigned long>
std::atomic_llong std::atomic<long long>
std::atomic_ullong std::atomic<unsigned long long>
std::atomic_char16_t std::atomic<char16_t>
std::atomic_char32_t std::atomic<char32_t>
std::atomic_wchar_t std::atomic<wchar_t>
std::atomic_int_least8_t std::atomic<int_least8_t>
std::atomic_uint_least8_t std::atomic<uint_least8_t>
std::atomic_int_least16_t std::atomic<int_least16_t>
std::atomic_uint_least16_t std::atomic<uint_least16_t>
std::atomic_int_least32_t std::atomic<int_least32_t>
std::atomic_uint_least32_t std::atomic<uint_least32_t>
std::atomic_int_least64_t std::atomic<int_least64_t>
std::atomic_uint_least64_t std::atomic<uint_least64_t>
std::atomic_int_fast8_t std::atomic<int_fast8_t>
std::atomic_uint_fast8_t std::atomic<uint_fast8_t>
std::atomic_int_fast16_t std::atomic<int_fast16_t>
std::atomic_uint_fast16_t std::atomic<uint_fast16_t>
std::atomic_int_fast32_t std::atomic<int_fast32_t>
std::atomic_uint_fast32_t std::atomic<uint_fast32_t>
std::atomic_int_fast64_t std::atomic<int_fast64_t>
std::atomic_uint_fast64_t std::atomic<uint_fast64_t>
std::atomic_intptr_t std::atomic<intptr_t>
std::atomic_uintptr_t std::atomic<uintptr_t>
std::atomic_size_t std::atomic<size_t>
std::atomic_ptrdiff_t std::atomic<ptrdiff_t>
std::atomic_intmax_t std::atomic<intmax_t>
std::atomic_uintmax_t std::atomic<uintmax_t>

Эти специализации имеют стандартное размещение, тривиальный конструктор по умолчанию, и тривиальный деструктор. Они поддерживают обобщённый синтаксис инициализации.

3) std::atomic<T*> для всех типов указателей. Эти специализации тоже имеют стандартное размещение, тривиальный конструктор по умолчанию, и тривиальный деструктор. Они поддерживают обобщённый синтаксис инициализации.

Содержание

[править] Функции-члены

строит атомный объект
Оригинал:
constructs an atomic object
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
сохраняет значение в атомном объекте
Оригинал:
stores a value into an atomic object
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
проверяет, является ли атомный объект без блокировок
Оригинал:
checks if the atomic object is lock-free
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
(C++11)
атомарно заменяет значение атомного объекта с неатомической аргумент
Оригинал:
atomically replaces the value of the atomic object with a non-atomic argument
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
(C++11)
атомарно получает значение атомного объекта
Оригинал:
atomically obtains the value of the atomic object
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
загружает значение из атомного объекта
Оригинал:
loads a value from an atomic object
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
(C++11)
атомарно заменить значение атомного объекта и получает значение состоявшейся ранее
Оригинал:
atomically replaced the value of the atomic object and obtains the value held previously
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
атомарно сравнивает значение атомного объекта с неатомической аргументов и выполняет атомного обмена, если равны или атомную нагрузку, если нет
Оригинал:
atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]

[править] Специализированные функции-члены

(C++11)
атомарно добавляет аргумент значением, хранящимся в атомном объекте и получает значение состоявшейся ранее
Оригинал:
atomically adds the argument to the value stored in the atomic object and obtains the value held previously
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
(C++11)
атомарно вычитает аргумент значением, хранящимся в атомном объекте и получает значение состоявшейся ранее
Оригинал:
atomically subtracts the argument from the value stored in the atomic object and obtains the value held previously
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
(C++11)
атомарно выполняет побитовое И между аргументом и значением атомного объекта и получает значение состоявшейся ранее
Оригинал:
atomically performs bitwise AND between the argument and the value of the atomic object and obtains the value held previously
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
(C++11)
atomically performs bitwise OR between the argument and the value of the atomic object and obtains the value held previously
(public функция-член) [edit]
(C++11)
атомарно выполняет побитовое XOR между аргументом и значением атомного объекта и получает значение состоявшейся ранее
Оригинал:
atomically performs bitwise XOR between the argument and the value of the atomic object and obtains the value held previously
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
увеличивает или уменьшает атомный значение на единицу
Оригинал:
increments or decrements the atomic value by one
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]
сложение, вычитание или выполнение побитового AND, OR, XOR с атомарным значением
Оригинал:
adds, subtracts, or performs bitwise AND, OR, XOR with the atomic value
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(public функция-член) [edit]

[править] Замечания

Существуют функции, не являющиеся членами классов, эквивалентные всем функциям-членам std::atomic. Эти внешние функции могут быть перегружены для классов, не являющихся специализациями std::atomic, но способных гарантировать атомарность. В стандартной библиотеке таким типом является только std::shared_ptr<T>.

[править] См. также

безблокировочного логическое атомного типа
Оригинал:
the lock-free boolean atomic type
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(класс) [edit]