Struct WaitGroup
pub struct WaitGroup { /* private fields */ }
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)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
Trait Implementations
impl Clone for WaitGroup
fn clone(&self) -> Self
impl Debug for WaitGroup
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Default for WaitGroup
fn default() -> Self
impl Drop for WaitGroup
fn drop(&mut self)
Auto Trait Implementations
impl Freeze for WaitGroup
impl RefUnwindSafe for WaitGroup
impl Send for WaitGroup
impl Sync for WaitGroup
impl Unpin for WaitGroup
impl UnsafeUnpin for WaitGroup
impl UnwindSafe for WaitGroup
Blanket Implementations
impl<T> Any for WaitGroup
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for WaitGroup
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for WaitGroup
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for WaitGroup
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for WaitGroup
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for WaitGroup
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for WaitGroup
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for WaitGroup
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for WaitGroup
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>