Add ScopedJoinHandle::is_running().

This commit is contained in:
Mara Bos 2022-01-04 14:52:55 +01:00
parent 0e24ad537b
commit cc699e1b62

View File

@ -5,7 +5,7 @@
use crate::marker::PhantomData;
use crate::panic::{catch_unwind, resume_unwind, AssertUnwindSafe};
use crate::sync::atomic::{AtomicUsize, Ordering};
use crate::sync::Mutex;
use crate::sync::{Arc, Mutex};
/// TODO: documentation
pub struct Scope<'env> {
@ -114,6 +114,15 @@ pub fn join(self) -> Result<T> {
pub fn thread(&self) -> &Thread {
&self.0.thread
}
/// Checks if the the associated thread is still running its main function.
///
/// This might return `false` for a brief moment after the thread's main
/// function has returned, but before the thread itself has stopped running.
#[unstable(feature = "thread_is_running", issue = "90470")]
pub fn is_running(&self) -> bool {
Arc::strong_count(&self.0.packet) > 1
}
}
impl<'env> fmt::Debug for Scope<'env> {