pub struct AsyncRuntimeBuilder<O: Default + 'static = ()>(/* private fields */);Expand description
异步运行时构建器
Implementations§
Source§impl<O: Default + 'static> AsyncRuntimeBuilder<O>
impl<O: Default + 'static> AsyncRuntimeBuilder<O>
Sourcepub 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>
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>
构建默认的工作者异步运行时
Sourcepub 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,
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,
构建自定义的工作者异步运行时
Sourcepub fn default_multi_thread(
worker_prefix: Option<&str>,
worker_stack_size: Option<usize>,
worker_size: Option<usize>,
worker_sleep_timeout: Option<u64>,
) -> MultiTaskRuntime<O>
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和底层任务池保证。
Sourcepub 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>,
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more