Skip to content

Commit 333e544

Browse files
committed
P3111R8 Atomic Reduction Operations
1 parent 47d9c36 commit 333e544

File tree

4 files changed

+604
-7
lines changed

4 files changed

+604
-7
lines changed

source/algorithms.tex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,8 @@
315315
A standard library function is \defn{vectorization-unsafe}
316316
if it is specified to synchronize with another function invocation, or
317317
another function invocation is specified to synchronize with it,
318-
and if it is not a memory allocation or deallocation function.
318+
and if it is not a memory allocation or deallocation function
319+
or lock-free atomic modify-write operation\iref{atomics.order}.
319320
\begin{note}
320321
Implementations must ensure that internal synchronization
321322
inside standard library functions does not prevent forward progress

source/basic.tex

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6618,7 +6618,8 @@
66186618
\item invoke the function \tcode{std::this_thread::yield}\iref{thread.thread.this},
66196619
\item make a call to a library I/O function,
66206620
\item perform an access through a volatile glvalue,
6621-
\item perform a synchronization operation or an atomic operation, or
6621+
\item perform an atomic or synchronization operation
6622+
other than an atomic modify-write operation\iref{atomics.order}, or
66226623
\item continue execution of a trivial infinite loop\iref{stmt.iter.general}.
66236624
\end{itemize}
66246625
\begin{note}
@@ -6675,9 +6676,10 @@
66756676
an \defn{execution step}:
66766677
\begin{itemize}
66776678
\item termination of the thread of execution,
6678-
\item performing an access through a volatile glvalue, or
6679-
\item completion of a call to a library I/O function, a
6680-
synchronization operation, or an atomic operation.
6679+
\item performing an access through a volatile glvalue,
6680+
\item completion of a call to a library I/O function, or
6681+
\item completion of an atomic or synchronization operation
6682+
other than an atomic modify-write operation\iref{atomics.order}.
66816683
\end{itemize}
66826684

66836685
\pnum

source/support.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,7 @@
579579
#define @\defnlibxname{cpp_lib_atomic_is_always_lock_free}@ 201603L // freestanding, also in \libheader{atomic}
580580
#define @\defnlibxname{cpp_lib_atomic_lock_free_type_aliases}@ 201907L // also in \libheader{atomic}
581581
#define @\defnlibxname{cpp_lib_atomic_min_max}@ 202403L // freestanding, also in \libheader{atomic}
582+
#define @\defnlibxname{cpp_lib_atomic_reductions}@ 202506L // freestanding, also in \libheader{atomic}
582583
#define @\defnlibxname{cpp_lib_atomic_ref}@ 202411L // freestanding, also in \libheader{atomic}
583584
#define @\defnlibxname{cpp_lib_atomic_shared_ptr}@ 201711L // also in \libheader{memory}
584585
#define @\defnlibxname{cpp_lib_atomic_value_initialization}@ 201911L // freestanding, also in \libheader{atomic}, \libheader{memory}

0 commit comments

Comments
 (0)