You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
925 B
Rust
40 lines
925 B
Rust
use crate::task::{self, JoinHandle};
|
|
|
|
/// Spawns a blocking task.
|
|
///
|
|
/// The task will be spawned onto a thread pool specifically dedicated to blocking tasks. This
|
|
/// is useful to prevent long-running synchronous operations from blocking the main futures
|
|
/// executor.
|
|
///
|
|
/// See also: [`task::block_on`], [`task::spawn`].
|
|
///
|
|
/// [`task::block_on`]: fn.block_on.html
|
|
/// [`task::spawn`]: fn.spawn.html
|
|
///
|
|
/// # Examples
|
|
///
|
|
/// Basic usage:
|
|
///
|
|
/// ```
|
|
/// # #[cfg(feature = "unstable")]
|
|
/// # async_std::task::block_on(async {
|
|
/// #
|
|
/// use async_std::task;
|
|
///
|
|
/// task::spawn_blocking(|| {
|
|
/// println!("long-running task here");
|
|
/// })
|
|
/// .await;
|
|
/// #
|
|
/// # })
|
|
/// ```
|
|
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
|
|
#[inline]
|
|
pub fn spawn_blocking<F, T>(f: F) -> JoinHandle<T>
|
|
where
|
|
F: FnOnce() -> T + Send + 'static,
|
|
T: Send + 'static,
|
|
{
|
|
task::spawn(async_global_executor::spawn_blocking(f))
|
|
}
|