Структура Builder
pub struct Builder<'a> { /* private fields */ }
tokio_unstable и при включённом crate feature rt и crate feature tracing.Фабрика, используемая для настройки свойств новой задачи.
Примечание: это нестабильный API. Публичный API этого типа может измениться в выпусках 1.x. Подробности см. в документации по нестабильным функциям.
Методы можно объединять в цепочки для настройки.
В настоящее время доступен только один параметр конфигурации:
-
name, задающий имя, связанное с задачей
С помощью Builder можно создать три типа задач:
-
spawn_localдля выполнения фьючерсов, не реализующихSend -
spawnдля выполнения фьючерсов, реализующихSend, в среде выполнения -
spawn_blockingдля выполнения блокирующего кода в пуле потоков для блокирующих задач.
Пример
use tokio::net::{TcpListener, TcpStream};
use std::io;
async fn process(socket: TcpStream) {
// ...
}
#[tokio::main]
async fn main() -> io::Result<()> {
let listener = TcpListener::bind("127.0.0.1:8080").await?;
loop {
let (socket, _) = listener.accept().await?;
tokio::task::Builder::new()
.name("tcp connection handler")
.spawn(async move {
// Process each socket concurrently.
process(socket).await
})?;
}
}Реализации
impl<'a> Builder<'a>
pub fn new() -> Self
Создаёт новый конструктор задач.
pub fn spawn<Fut>(self, future: Fut) -> Result<JoinHandle<Fut::Output>>
Создаёт задачу с настройками этого конструктора в текущей среде выполнения.
Паника
Этот метод вызывает панику, если его вызвать вне среды выполнения Tokio.
Подробнее см. task::spawn.
pub fn spawn_on<Fut>( self, future: Fut, handle: &Handle, ) -> Result<JoinHandle<Fut::Output>>
Создаёт задачу с настройками этого конструктора в указанной дескрипторе среды выполнения.
Подробнее см. Handle::spawn.
pub fn spawn_local<Fut>(self, future: Fut) -> Result<JoinHandle<Fut::Output>>
Создаёт задачу !Send в текущем LocalSet или LocalRuntime с настройками этого конструктора.
Созданная future будет выполняться в том же потоке, который вызвал spawn_local. Этот метод можно вызывать только в контексте набора локальных задач или LocalRuntime.
Паника
Эта функция вызывает панику, если её вызвать вне набора локальных задач или LocalRuntime.
Подробнее см. task::spawn_local.
pub fn spawn_local_on<Fut>( self, future: Fut, local_set: &LocalSet, ) -> Result<JoinHandle<Fut::Output>>
Запускает !Send задачу на предоставленном LocalSet с настройками этого построителя.
Подробнее см. LocalSet::spawn_local.
pub fn spawn_blocking<Function, Output>( self, function: Function, ) -> Result<JoinHandle<Output>>
Запускает блокирующий код в пуле потоков для блокирующих задач.
Паника
Этот метод вызывает панику, если его вызвать вне среды выполнения Tokio.
Подробнее см. task::spawn_blocking.
pub fn spawn_blocking_on<Function, Output>( self, function: Function, handle: &Handle, ) -> Result<JoinHandle<Output>>
Запускает блокирующий код в пуле потоков для блокирующих задач дескриптора среды выполнения.
Подробнее см. Handle::spawn_blocking.
Реализации трейтов
Автоматические реализации трейтов
impl<'a> Freeze for Builder<'a>
impl<'a> RefUnwindSafe for Builder<'a>
impl<'a> Send for Builder<'a>
impl<'a> Sync for Builder<'a>
impl<'a> Unpin for Builder<'a>
impl<'a> UnsafeUnpin for Builder<'a>
impl<'a> UnwindSafe for Builder<'a>
Реализации для всех типов
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/task/struct.Builder.html