Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion source/support.tex
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@
// also in \libheader{unordered_map}, \libheader{unordered_set}
#define @\defnlibxname{cpp_lib_hardware_interference_size}@ 201703L // freestanding, also in \libheader{new}
#define @\defnlibxname{cpp_lib_has_unique_object_representations}@ 201606L // freestanding, also in \libheader{type_traits}
#define @\defnlibxname{cpp_lib_hazard_pointer}@ 202306L // also in \libheader{hazard_pointer}
#define @\defnlibxname{cpp_lib_hazard_pointer}@ 202606L // also in \libheader{hazard_pointer}
#define @\defnlibxname{cpp_lib_hive}@ 202502L // also in \libheader{hive}
#define @\defnlibxname{cpp_lib_hypot}@ 201603L // also in \libheader{cmath}
#define @\defnlibxname{cpp_lib_incomplete_container_elements}@ 201505L
Expand Down
36 changes: 36 additions & 0 deletions source/threads.tex
Original file line number Diff line number Diff line change
Expand Up @@ -13415,6 +13415,8 @@
// \ref{saferecl.hp.holder.nonmem}, non-member functions
hazard_pointer make_hazard_pointer();
void swap(hazard_pointer&, hazard_pointer&) noexcept;
void make_hazard_pointer_batch(span<hazard_pointer>);
void clear_hazard_pointer_batch(span<hazard_pointer>) noexcept;
}
\end{codeblock}

Expand Down Expand Up @@ -13741,3 +13743,37 @@
\effects
Equivalent to \tcode{a.swap(b)}.
\end{itemdescr}

\indexlibrarymember{make_hazard_pointer_batch}{hazard_pointer}%
\begin{itemdecl}
void make_hazard_pointer_batch(span<hazard_pointer> batch);
\end{itemdecl}

\begin{itemdescr}
\pnum
\effects
If an exception is thrown, there are no effects.
Otherwise, for each element \tcode{e} of \tcode{batch}
such that \tcode{e.empty()} is \tcode{true},
constructs a hazard pointer and makes \tcode{e}
the owner of that hazard pointer.

\pnum
\throws
\tcode{bad_alloc} if memory for any of the newly-constructed hazard pointers
could not be allocated.
\end{itemdescr}

\indexlibrarymember{clear_hazard_pointer_batch}{hazard_pointer}%
\begin{itemdecl}
void clear_hazard_pointer_batch(span<hazard_pointer> batch) noexcept;
\end{itemdecl}

\begin{itemdescr}
\pnum
\effects
For each element \tcode{e} of \tcode{batch},
if \tcode{e.empty()} is \tcode{false},
destroys the hazard pointer owned by \tcode{e} and
makes \tcode{e} empty.
\end{itemdescr}
Loading