Spec-Zone.ru › C++

std::atomic_ref<T>::fetch_add

член только для atomic_ref<Integral> и atomic_ref<Floating> специализаций шаблона
T fetch_add( T arg, std::memory_order order = std::memory_order_seq_cst ) const noexcept;
(1)
член только для atomic_ref<T*> специализации шаблона
T* fetch_add( std::ptrdiff_t arg,
              std::memory_order order = std::memory_order_seq_cst ) const noexcept;
(2)

Атомарно заменяет текущее значение ссылаемого объекта результатом арифметического сложения значения и arg. Эта операция является операцией «чтение-модификация-запись». Память изменяется в соответствии со значением order.

Для целочисленных типов со знаком арифметика определяется с использованием представления в дополнительном коде. Нет неопределенных результатов.

Для типов с плавающей точкой среда с плавающей точкой, действующая в данный момент, может отличаться от среды с плавающей точкой вызывающей потока. Операция не обязательно должна соответствовать соответствующим std::numeric_limits характеристикам, но рекомендуется это делать. Если результат не является представимым значением для своего типа, результат не определён, но в противном случае операция не имеет неопределённого поведения.

Для T* типов результатом может быть неопределённый адрес, но в противном случае операция не имеет неопределённого поведения. Программа некорректна, если T не является типом объекта.

Параметры

arg - другой операнд арифметического сложения
order - ограничения порядка памяти для принудительного выполнения

Возвращаемое значение

Значение ссылаемого объекта непосредственно перед выполнением этой функции.

Пример

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/atomic/atomic_ref/fetch_add

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API