A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../error/error_code/../../atomic/atomic_fetch_sub.html below:

std::atomic_fetch_sub, std::atomic_fetch_sub_explicit - cppreference.com

template< class T >

T atomic_fetch_sub( std::atomic<T>* obj,

                    typename std::atomic<T>::difference_type arg ) noexcept;
(1) (since C++11) template< class T >

T atomic_fetch_sub( volatile std::atomic<T>* obj,

                    typename std::atomic<T>::difference_type arg ) noexcept;
(2) (since C++11) (3) (since C++11) (4) (since C++11)

Performs atomic subtraction. Atomically subtracts arg from the value pointed to by obj and returns the value obj held previously. The operation is performed as if the following was executed:

1,2) obj->fetch_sub(arg)

3,4) obj->fetch_sub(arg, order)

If std::atomic<T> has no fetch_sub member (this member is only provided for integral, floating-point(since C++20) and pointer types except bool), the program is ill-formed.

[edit] Parameters obj - pointer to the atomic object to modify arg - the value to subtract from the value stored in the atomic object order - the memory synchronization ordering [edit] Return value

The value immediately preceding the effects of this function in the modification order of *obj.

[edit] Example

Multiple threads may use std::atomic_fetch_sub to concurrently process an indexed container.

Output:

reader 2 processed item 50
reader 1 processed item 44
reader 4 processed item 46
<....>
reader 0 done
reader 4 done
reader 3 done
[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior P0558R1 C++11 exact type match was required because
T was deduced from multiple arguments T is only deduced
from obj [edit] See also atomically subtracts the argument from the value stored in the atomic object and obtains the value held previously
(public member function of std::atomic<T>) [edit] adds a non-atomic value to an atomic object and obtains the previous value of the atomic
(function template) [edit]

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4