pub struct NotifyOnce(/* private fields */);
Expand description
NotifyOnce Assumes:
One coroutine issue some loading job, multiple coroutines wait for it to complete.
§example:
async fn foo() {
use sync_utils::notifier::NotifyOnce;
use tokio::time::*;
use std::sync::{Arc, atomic::{AtomicBool, AtomicUsize, Ordering}};
let noti = NotifyOnce::new();
let done = Arc::new(AtomicBool::new(false));
for _ in 0..10 {
let _noti = noti.clone();
let _done = done.clone();
tokio::spawn(async move {
assert_eq!(_done.load(Ordering::Acquire), false);
_noti.wait().await;
assert_eq!(_done.load(Ordering::Acquire), true);
});
}
sleep(Duration::from_secs(1)).await;
done.store(true, Ordering::Release);
noti.done();
}
Implementations§
Trait Implementations§
Source§impl Clone for NotifyOnce
impl Clone for NotifyOnce
Source§fn clone(&self) -> NotifyOnce
fn clone(&self) -> NotifyOnce
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for NotifyOnce
impl !RefUnwindSafe for NotifyOnce
impl Send for NotifyOnce
impl Sync for NotifyOnce
impl Unpin for NotifyOnce
impl !UnwindSafe for NotifyOnce
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more