Struct WaitGroup
struct WaitGroup { ... }
Enables threads to synchronize the beginning or end of some computation.
Wait groups vs barriers
WaitGroup is very similar to Barrier, but there are a few differences:
-
Barrierneeds to know the number of threads at construction, whileWaitGroupis cloned to register more threads. -
A
Barriercan be reused even after all threads have synchronized, while aWaitGroupsynchronizes threads only once. -
All threads wait for others to reach the
Barrier. WithWaitGroup, each thread can choose to either wait for other threads or to continue without blocking.
Examples
use WaitGroup;
use thread;
// Create a new wait group.
let wg = new;
for _ in 0..4
// Block until all threads have finished their work.
wg.wait;
# sleep; // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
Implementations
impl WaitGroup
fn new() -> SelfCreates a new wait group and returns the single reference to it.
Examples
use WaitGroup; let wg = new;fn wait(self: Self)Drops this reference and waits until all other references are dropped.
Examples
use WaitGroup; use thread; let wg = new; spawn; // Block until both threads have reached `wait()`. wg.wait; # sleep; // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
impl Clone for WaitGroup
fn clone(self: &Self) -> WaitGroup
impl Debug for WaitGroup
fn fmt(self: &Self, f: &mut fmt::Formatter<'_>) -> fmt::Result
impl Default for WaitGroup
fn default() -> Self
impl Drop for WaitGroup
fn drop(self: &mut Self)
impl Freeze for WaitGroup
impl RefUnwindSafe for WaitGroup
impl Send for WaitGroup
impl Sync for WaitGroup
impl Unpin for WaitGroup
impl UnwindSafe for WaitGroup
impl<T> Any for WaitGroup
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for WaitGroup
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for WaitGroup
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for WaitGroup
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for WaitGroup
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for WaitGroup
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for WaitGroup
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for WaitGroup
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for WaitGroup
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>