Struct zircon_object::task::SuspendToken [−][src]
Suspend the given task.
Currently only thread or process handles may be suspended.
Example
let job = Job::root(); let proc = Process::create(&job, "proc").unwrap(); let thread = Thread::create(&proc, "thread").unwrap(); // start the thread and never terminate thread.start(0, 0, 0, 0, |thread| Box::pin(async move { loop { async_std::task::yield_now().await } let _ = thread; })).unwrap(); // wait for the thread running let object: Arc<dyn KernelObject> = thread.clone(); async_std::task::block_on(object.wait_signal(Signal::THREAD_RUNNING)); assert_eq!(thread.state(), ThreadState::Running); // suspend the thread { let task: Arc<dyn Task> = thread.clone(); let suspend_token = SuspendToken::create(&task); assert_eq!(thread.state(), ThreadState::Suspended); } // suspend token dropped, resume the thread assert_eq!(thread.state(), ThreadState::Running);
Implementations
impl SuspendToken
[src]
pub fn create(task: &Arc<dyn Task>) -> Arc<Self>
[src]
Create a SuspendToken
which can suspend the given task.
Trait Implementations
impl Debug for SuspendToken
[src]
impl Drop for SuspendToken
[src]
impl KernelObject for SuspendToken
[src]
fn id(&self) -> KoID
[src]
fn type_name(&self) -> &str
[src]
fn name(&self) -> String
[src]
fn set_name(&self, name: &str)
[src]
fn signal(&self) -> Signal
[src]
fn signal_set(&self, signal: Signal)
[src]
fn signal_clear(&self, signal: Signal)
[src]
fn signal_change(&self, clear: Signal, set: Signal)
[src]
fn add_signal_callback(&self, callback: SignalHandler)
[src]
fn get_child(&self, _id: KoID) -> ZxResult<Arc<dyn KernelObject>>
[src]
fn peer(&self) -> ZxResult<Arc<dyn KernelObject>>
[src]
fn related_koid(&self) -> KoID
[src]
fn allowed_signals(&self) -> Signal
[src]
Auto Trait Implementations
impl !RefUnwindSafe for SuspendToken
impl Send for SuspendToken
impl Sync for SuspendToken
impl Unpin for SuspendToken
impl !UnwindSafe for SuspendToken
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Downcast for T where
T: Any,
[src]
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
[src]
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
[src]
pub fn as_any(&self) -> &(dyn Any + 'static)
[src]
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
[src]
impl<T> DowncastSync for T where
T: Send + Sync + Any,
[src]
T: Send + Sync + Any,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,