std::atomic_ref<T>::fetch_sub
член только для atomic_ref<Integral> и atomic_ref<Floating> специализаций шаблона |
||
T fetch_sub( T arg, std::memory_order order = std::memory_order_seq_cst ) const noexcept; |
(1) | |
член только для atomic_ref<T*> специализации шаблона |
||
T* fetch_sub( 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_sub