atomic_atomic_fetch_sub
atomic_atomic_fetch_sub (원자적 뺄셈)
std::atomic_fetch_sub는 원자적 객체의 현재 값에서 값을 빼고 이전 값을 반환해요. CAS 루프 없이 안전하게 감소할 수 있어요.
출처: cppreference
본문
std::atomic_fetch_sub와 std::atomic_fetch_sub_explicit은 <atomic> 헤더에 정의된 자유 함수예요.
template< class T >
T atomic_fetch_sub( std::atomic<T>* obj,
typename std::atomic<T>::difference_type arg ) noexcept;
template< class T >
T atomic_fetch_sub_explicit( std::atomic<T>* obj,
typename std::atomic<T>::difference_type arg,
std::memory_order order ) noexcept;
obj가 가리키는 값에서 arg를 원자적으로 빼고 이전 값을 반환해요. obj->fetch_sub(arg)처럼 동작해요. T가 정수 타입이거나 포인터 타입일 때 사용 가능해요.
반환값 (Return value)
연산 전의 객체 값이에요.
예제 (Example)
#include <atomic>
#include <iostream>
std::atomic<int> counter{10};
int main()
{
int prev = std::atomic_fetch_sub(&counter, 3);
std::cout << prev << '\n'; // 10
std::cout << counter.load() << '\n'; // 7
}