pub struct AutoResetEvent { /* private fields */ }Expand description
A AutoResetEvent
An event represents a boolean condition that can be waited on until signaled. This allows a thread to block and wait for another thread to set the event. A waiting thread that gets released to continue will consume and automatically reset the event.
§Examples
use std::thread;
use std::time::Duration;
use win_events::{Event, AutoResetEvent};
let evt_started = AutoResetEvent::new(false);
let evt_started2 = evt_started.clone();
// spawn a thread and set the cloned event
thread::spawn(move|| {
evt_started2.set();
});
// Wait for the started event
evt_started.wait(Duration::from_millis(100)).unwrap();
assert!(!evt_started.is_set())Implementations§
Source§impl AutoResetEvent
impl AutoResetEvent
Sourcepub fn new(init: bool) -> AutoResetEvent
pub fn new(init: bool) -> AutoResetEvent
Creates a new AutoResetEvent and initialized the value.
§Examples
use win_events::AutoResetEvent;
let evt = AutoResetEvent::new(false);Sourcepub fn is_set(&self) -> bool
pub fn is_set(&self) -> bool
Gets the current state of the event.
§Examples
use win_events::AutoResetEvent;
let evt = AutoResetEvent::new(true);
assert!(evt.is_set())Sourcepub fn set(&self)
pub fn set(&self)
Sets the event and fires a signal to any threads waiting on the event.
§Examples
use win_events::AutoResetEvent;
let evt = AutoResetEvent::new(false);
evt.set();
assert!(evt.is_set())Sourcepub fn clear(&self)
pub fn clear(&self)
Sets the even, causing any waiting threads to receive a signal.
§Examples
use win_events::AutoResetEvent;
let evt = AutoResetEvent::new(false);
evt.clear();
assert!(!evt.is_set())Sourcepub fn wait(&self, dur: Duration) -> Result<bool, Box<dyn Error>>
pub fn wait(&self, dur: Duration) -> Result<bool, Box<dyn Error>>
Creates a new AutoResetEvent and initialized the value.
§Examples
use std::thread::{sleep, spawn};
use std::time::Duration;
use win_events::AutoResetEvent;
let evt = AutoResetEvent::new(false);
let evt_inner = evt.clone();
let worker = spawn(move || {
sleep(Duration::from_millis(3));
evt_inner.set()
});
let wait_result = evt.wait(Duration::from_millis(100)).unwrap();
assert!(wait_result && !evt.is_set())Trait Implementations§
Source§impl Clone for AutoResetEvent
impl Clone for AutoResetEvent
Source§fn clone(&self) -> AutoResetEvent
fn clone(&self) -> AutoResetEvent
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 AutoResetEvent
impl !RefUnwindSafe for AutoResetEvent
impl Send for AutoResetEvent
impl Sync for AutoResetEvent
impl Unpin for AutoResetEvent
impl !UnwindSafe for AutoResetEvent
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