Skip to content

Commit ac4dbe2

Browse files
committed
P3111R8 Atomic Reduction Operations
1 parent aaa2220 commit ac4dbe2

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
@@ -6617,7 +6617,8 @@
66176617
\item invoke the function \tcode{std::this_thread::yield}\iref{thread.thread.this},
66186618
\item make a call to a library I/O function,
66196619
\item perform an access through a volatile glvalue,
6620-
\item perform a synchronization operation or an atomic operation, or
6620+
\item perform an atomic or synchronization operation
6621+
other than an atomic modify-write operation\iref{atomics.order}, or
66216622
\item continue execution of a trivial infinite loop\iref{stmt.iter.general}.
66226623
\end{itemize}
66236624
\begin{note}
@@ -6674,9 +6675,10 @@
66746675
an \defn{execution step}:
66756676
\begin{itemize}
66766677
\item termination of the thread of execution,
6677-
\item performing an access through a volatile glvalue, or
6678-
\item completion of a call to a library I/O function, a
6679-
synchronization operation, or an atomic operation.
6678+
\item performing an access through a volatile glvalue,
6679+
\item completion of a call to a library I/O function, or
6680+
\item completion of an atomic or synchronization operation
6681+
other than an atomic modify-write operation\iref{atomics.order}.
66806682
\end{itemize}
66816683

66826684
\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)