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