T atomic_fetch_sub( std::atomic<T>* obj,
T atomic_fetch_sub( volatile std::atomic<T>* obj,
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.
The value immediately preceding the effects of this function in the modification order of *obj.
[edit] ExampleMultiple 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 becauseT
was deduced from multiple arguments T
is only deduced
std::atomic<T>
) [edit] adds a non-atomic value to an atomic object and obtains the previous value of the atomic
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