std::experi...ve_and_wait(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

  • std::experimental::flex_barrier::arrive_and_wait β€” std::experimental::flex_barrier::arrive_and_wait

okay so bestie, this page is std::experi...ve_and_wait(3) from the C++ Standard Libary (their spelling, not mine 😭), and it's all about the std::experimental::flex_barrier::arrive_and_wait member. πŸ’…

✨ Synopsis ✨

void arrive_and_wait();  (concurrency TS)

It blocks and arrives at the flex_barrier's synchronization point. That's the whole vibe.

⚠️ The behavior is undefined if the calling thread is not in the set of participating threads of this flex_barrier. Like, do not. It's giving danger.

Calls to arrive_and_wait synchronize with the start of the completion phase of the flex_barrier. The completion of the completion phase synchronizes with the return from the call. ✨

Calls to arrive_and_drop and arrive_and_wait never introduce data races with themselves or each other. periodt. πŸ’€

πŸ¦‹ Notes πŸ¦‹

  • It is safe for a thread to call either arrive_and_wait() or arrive_and_drop() immediately on return from this call (provided that the function object for the completion phase did not return zero).
  • It's not necessary to ensure that all blocked threads have exited arrive_and_wait() before a thread calls it again.
  • The completion phase executes the function object specified when the flex_barrier was constructed.
  • If it returns -1, the set of participating threads is unchanged; otherwise, the set of participating threads is a new set with the size equal to the return value N, and consists of the next N threads to arrive at the synchronization point.
  • If N == 0, the flex_barrier can only be destroyed.
  • The initial set of participating threads for a flex_barrier constructed for num_threads threads is the first num_threads to arrive at its synchronization point.

🌸 Exceptions 🌸

Throws nothing. literally nothing. not a single throw. 😌

πŸ‘‘ See also πŸ‘‘

  • arrive_and_drop β€” arrive at the synchronization point and remove the current thread from the set of participating threads (public member function).

mwah πŸ’‹ source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::experi...ve_and_wait(3)

πŸ“¦ where this page comes from