Expands detach
documentation in thread::JoinHande
.
Part of #29378 . - Adds an example of a thread detaching. - Expands what `detaching` means.
This commit is contained in:
parent
77f1bec6f5
commit
b76b9e1467
@ -1019,11 +1019,12 @@ impl<T> JoinInner<T> {
|
||||
|
||||
/// An owned permission to join on a thread (block on its termination).
|
||||
///
|
||||
/// A `JoinHandle` *detaches* the child thread when it is dropped.
|
||||
/// A `JoinHandle` *detaches* the associated thread when it is dropped, which
|
||||
/// means that there is no longer any handle to thread and no way to `join`
|
||||
/// on it.
|
||||
///
|
||||
/// Due to platform restrictions, it is not possible to [`Clone`] this
|
||||
/// handle: the ability to join a child thread is a uniquely-owned
|
||||
/// permission.
|
||||
/// handle: the ability to join a thread is a uniquely-owned permission.
|
||||
///
|
||||
/// This `struct` is created by the [`thread::spawn`] function and the
|
||||
/// [`thread::Builder::spawn`] method.
|
||||
@ -1052,6 +1053,30 @@ impl<T> JoinInner<T> {
|
||||
/// }).unwrap();
|
||||
/// ```
|
||||
///
|
||||
/// Child being detached and outliving its parent:
|
||||
///
|
||||
/// ```no_run
|
||||
/// use std::thread;
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// let original_thread = thread::spawn(|| {
|
||||
/// let _detached_thread = thread::spawn(|| {
|
||||
/// // Here we sleep to make sure that the first thread returns before.
|
||||
/// thread::sleep(Duration::from_millis(10));
|
||||
/// // This will be called, even though the JoinHandle is dropped.
|
||||
/// println!("♫ Still alive ♫");
|
||||
/// });
|
||||
/// });
|
||||
///
|
||||
/// let _ = original_thread.join();
|
||||
/// println!("Original thread is joined.");
|
||||
///
|
||||
/// // We make sure that the new thread has time to run, before the main
|
||||
/// // thread returns.
|
||||
///
|
||||
/// thread::sleep(Duration::from_millis(1000));
|
||||
/// ```
|
||||
///
|
||||
/// [`Clone`]: ../../std/clone/trait.Clone.html
|
||||
/// [`thread::spawn`]: fn.spawn.html
|
||||
/// [`thread::Builder::spawn`]: struct.Builder.html#method.spawn
|
||||
|
Loading…
x
Reference in New Issue
Block a user