Skip to main content

AsyncRuntimeBuilder

Struct AsyncRuntimeBuilder 

Source
pub struct AsyncRuntimeBuilder<O: Default + 'static = ()>(/* private fields */);
Expand description

异步运行时构建器

Implementations§

Source§

impl<O: Default + 'static> AsyncRuntimeBuilder<O>

Source

pub fn default_worker_thread( worker_name: Option<&str>, worker_stack_size: Option<usize>, worker_sleep_timeout: Option<u64>, worker_loop_interval: Option<Option<u64>>, ) -> WorkerRuntime<O>

构建默认的工作者异步运行时

Source

pub fn custom_worker_thread<P, F0, F1>( pool: P, worker_handle: Arc<AtomicBool>, worker_condvar: Arc<(AtomicBool, Mutex<()>, Condvar)>, thread_name: &str, thread_stack_size: usize, sleep_timeout: u64, loop_interval: Option<u64>, loop_func: F0, get_queue_len: F1, ) -> WorkerRuntime<O, P>
where P: AsyncTaskPoolExt<O> + AsyncTaskPool<O, Pool = P>, F0: Fn() -> (bool, Duration) + Send + 'static, F1: Fn() -> usize + Send + 'static,

构建自定义的工作者异步运行时

Source

pub fn default_multi_thread( worker_prefix: Option<&str>, worker_stack_size: Option<usize>, worker_size: Option<usize>, worker_sleep_timeout: Option<u64>, ) -> MultiTaskRuntime<O>

构建默认的多线程异步运行时。

说明:

  • 这是 AsyncRuntimeBuilder 对外提供的默认多线程 runtime 构建入口。
  • 本轮保持函数签名、返回类型和既有启动语义不变。
  • 当调用方显式传入大于 0 的 worker_size 时,会同时创建相同 worker slot 数量 的 StealableTaskPool,避免启动 worker 数量大于 pool 内实际 worker slot 时, worker 线程中 clone_thread_waker().unwrap() panic。
  • worker_size=Some(0) 保留旧语义:仍通过 builder 的 init_worker_size(0)set_worker_limit(0, 0) 兜底,不会把 0 直接传给 StealableTaskPool::with

参数:

  • worker_prefix:worker 线程名前缀;None 使用 builder 默认值。
  • worker_stack_size:worker 栈大小;None 使用默认 2 MiB。
  • worker_size:固定 worker 数量;None 使用默认 builder 和默认 pool 尺寸; Some(0) 使用 builder 原有的默认初始 worker 兜底语义。
  • worker_sleep_timeout:worker 空闲休眠最长时长,单位 ms;None 使用默认值。

返回:

  • 已启动的 MultiTaskRuntime<O>

边界条件:

  • worker_size=Some(size > 0) 时,实际 worker 数和 pool worker slot 数保持一致。
  • worker_size=Some(0) 时不创建 0 worker pool,避免兼容性回归。
  • worker_size=None 时不改变原默认构建路径。

性能:

  • 构建时间 O(W),W 为 worker 数;空间 O(W)。
  • 该函数不是任务调度热路径。

副作用与安全性:

  • 非纯函数,会创建任务池、runtime 和 worker 线程。
  • 不阻塞等待 worker 完成;不执行用户 future。
  • 线程安全由 MultiTaskRuntimeBuilder::build 和底层任务池保证。
Source

pub fn custom_multi_thread<P>( pool: P, worker_prefix: &str, worker_stack_size: usize, worker_size: usize, worker_sleep_timeout: u64, worker_timer_interval: usize, ) -> MultiTaskRuntime<O, P>
where P: AsyncTaskPoolExt<O> + AsyncTaskPool<O, Pool = P>,

构建自定义的多线程异步运行时

Auto Trait Implementations§

§

impl<O> Freeze for AsyncRuntimeBuilder<O>

§

impl<O> RefUnwindSafe for AsyncRuntimeBuilder<O>
where O: RefUnwindSafe,

§

impl<O> Send for AsyncRuntimeBuilder<O>
where O: Send,

§

impl<O> Sync for AsyncRuntimeBuilder<O>
where O: Sync,

§

impl<O> Unpin for AsyncRuntimeBuilder<O>
where O: Unpin,

§

impl<O> UnsafeUnpin for AsyncRuntimeBuilder<O>

§

impl<O> UnwindSafe for AsyncRuntimeBuilder<O>
where O: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ThreadSend for T
where T: Send,

Source§

impl<T> ThreadSync for T
where T: Sync + Send,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V