File tree Expand file tree Collapse file tree 4 files changed +605
-7
lines changed Expand file tree Collapse file tree 4 files changed +605
-7
lines changed Original file line number Diff line number Diff line change 339
339
A standard library function is \defn{vectorization-unsafe}
340
340
if it is specified to synchronize with another function invocation, or
341
341
another function invocation is specified to synchronize with it,
342
- and if it is not a memory allocation or deallocation function.
342
+ and if it is not a memory allocation or deallocation function
343
+ or lock-free atomic modify-write operation\iref{atomics.order}.
343
344
\begin{note}
344
345
Implementations must ensure that internal synchronization
345
346
inside standard library functions does not prevent forward progress
Original file line number Diff line number Diff line change 6919
6919
\item invoke the function \tcode {std::this_thread::yield}\iref {thread.thread.this },
6920
6920
\item make a call to a library I/O function,
6921
6921
\item perform an access through a volatile glvalue,
6922
- \item perform a synchronization operation or an atomic operation, or
6922
+ \item perform an atomic or synchronization operation
6923
+ other than an atomic modify-write operation\iref {atomics.order }, or
6923
6924
\item continue execution of a trivial infinite loop\iref {stmt.iter.general }.
6924
6925
\end {itemize }
6925
6926
\begin {note }
6976
6977
an \defn {execution step}:
6977
6978
\begin {itemize }
6978
6979
\item termination of the thread of execution,
6979
- \item performing an access through a volatile glvalue, or
6980
- \item completion of a call to a library I/O function, a
6981
- synchronization operation, or an atomic operation.
6980
+ \item performing an access through a volatile glvalue,
6981
+ \item completion of a call to a library I/O function, or
6982
+ \item completion of an atomic or synchronization operation
6983
+ other than an atomic modify-write operation\iref {atomics.order }.
6982
6984
\end {itemize }
6983
6985
6984
6986
\pnum
Original file line number Diff line number Diff line change 591
591
#define @\defnlibxname {cpp_lib_atomic_is_always_lock_free}@ 201603L // freestanding, also in \libheader {atomic}
592
592
#define @\defnlibxname {cpp_lib_atomic_lock_free_type_aliases}@ 201907L // also in \libheader {atomic}
593
593
#define @\defnlibxname {cpp_lib_atomic_min_max}@ 202506L // freestanding, also in \libheader {atomic}
594
+ #define @\defnlibxname {cpp_lib_atomic_reductions}@ 202506L // freestanding, also in \libheader {atomic}
594
595
#define @\defnlibxname {cpp_lib_atomic_ref}@ 202411L // freestanding, also in \libheader {atomic}
595
596
#define @\defnlibxname {cpp_lib_atomic_shared_ptr}@ 201711L // also in \libheader {memory}
596
597
#define @\defnlibxname {cpp_lib_atomic_value_initialization}@ 201911L // freestanding, also in \libheader {atomic}, \libheader {memory}
You can’t perform that action at this time.
0 commit comments