Spec-Zone.ru › C++

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

Spec-Zone.ru

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