Namespaces
Variants

std::atomic<T>:: operator+=,-=

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
atomic< Integral > 특수화의 멤버만 해당 
atomic< Floating > 특수화 (C++20부터)
T operator + = ( T arg ) noexcept ;
(1) (C++11부터)
T operator + = ( T arg ) volatile noexcept ;
(2) (C++11부터)
T operator - = ( T arg ) noexcept ;
(3) (C++11부터)
T operator - = ( T arg ) volatile noexcept ;
(4) (C++11부터)
atomic<T*> 부분 특수화의 멤버만 해당
T * operator + = ( std:: ptrdiff_t arg ) noexcept ;
(5) (C++11부터)
T * operator + = ( std:: ptrdiff_t arg ) volatile noexcept ;
(6) (C++11부터)
T * operator - = ( std:: ptrdiff_t arg ) noexcept ;
(7) (C++11부터)
T * operator - = ( std:: ptrdiff_t arg ) volatile noexcept ;
(8) (C++11부터)

현재 값을 이전 값과 arg 를 사용한 연산 결과로 원자적으로 교체합니다. 이 연산은 읽기-수정-쓰기 연산입니다.

  • operator + = 원자적 덧셈을 수행합니다. 다음과 동일합니다: return fetch_add ( arg ) + arg ; .
  • operator - = 원자적 뺄셈을 수행합니다. 다음과 동일합니다: return fetch_sub ( arg ) - arg ; .
1-4) 부호 있는 정수형의 경우, 산술 연산은 2의 보수 표현을 사용하도록 정의됩니다. 정의되지 않은 결과는 존재하지 않습니다.

부동 소수점 타입의 경우, floating-point environment 가 호출 스레드의 부동 소수점 환경과 다를 수 있습니다. 연산이 해당 std::numeric_limits 특성에 부합할 필요는 없지만, 그러하는 것이 권장됩니다. 결과가 해당 타입으로 표현 가능한 값이 아닌 경우, 결과는 지정되지 않지만 그 외에는 정의되지 않은 동작이 없습니다.

(since C++20)
5-8) 결과는 정의되지 않은 주소일 수 있지만, 그 외의 연산에서는 정의되지 않은 동작이 발생하지 않습니다.
만약 T 가 완전한 객체 타입이 아니라면, 프로그램은 형식에 맞지 않습니다.


다음 경우에 사용이 권장되지 않습니다: std:: atomic < T > :: is_always_lock_free false 이고, volatile 오버로드가 오버로드 해결에 참여하는 경우.

(C++20부터)

목차

매개변수

arg - 산술 연산을 위한 인수

반환값

결과 값 (즉, 해당 멤버 함수의 효과가 적용되기 직전의 값과 해당 이진 연산자를 적용한 결과로, modification order 에서 * this 의 값에 해당하는 것).

참고 사항

대부분의 복합 할당 연산자와 달리, 원자 타입에 대한 복합 할당 연산자는 왼쪽 인수에 대한 참조를 반환하지 않습니다. 대신 저장된 값의 복사본을 반환합니다.

결함 보고서

다음 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
P0558R1 C++11 (cv 한정자가 있을 수 있는) void 또는 함수 포인터에 대한 산술 연산 허용 잘못된 형식으로 지정됨

참고 항목

원자적으로 인수를 원자 객체에 저장된 값에 더하고 이전에 보유한 값을 획득합니다
(public member function)
원자적으로 원자 객체에 저장된 값에서 인수를 빼고 이전에 보유한 값을 획득합니다
(public member function)
원자 값을 1씩 증가시키거나 감소시킵니다
(public member function)
원자 값과 비트 AND, OR, XOR 연산을 수행합니다
(public member function)