#run-time #async #io #future

actix-rt

基于Tokio的单线程异步运行时,适用于Actix生态系统

30个版本 (16个稳定版)

2.10.0 2024年6月9日
2.9.0 2023年8月26日
2.8.0 2023年1月21日
2.7.0 2022年3月9日
0.1.0 2018年12月11日

#207 in 异步

Download history 227825/week @ 2024-04-28 221649/week @ 2024-05-05 244406/week @ 2024-05-12 247177/week @ 2024-05-19 235682/week @ 2024-05-26 272948/week @ 2024-06-02 275122/week @ 2024-06-09 248421/week @ 2024-06-16 250897/week @ 2024-06-23 234095/week @ 2024-06-30 257914/week @ 2024-07-07 259321/week @ 2024-07-14 276949/week @ 2024-07-21 265593/week @ 2024-07-28 264934/week @ 2024-08-04 294732/week @ 2024-08-11

1,112,477 每月下载量
不到 384 crates 中使用

MIT/Apache

37KB
569

actix-rt

基于Tokio的单线程异步运行时,适用于Actix生态系统。

crates.io Documentation Version MIT or Apache 2.0 licensed
dependency status Download Chat on Discord

有关更多信息,请参阅crate文档: https://docs.rs/actix-rt.


lib.rs:

基于Tokio的单线程异步运行时,适用于Actix生态系统。

在Actix生态系统的多数部分,选择使用!Send futures。因此,单线程运行时是合适的,因为可以保证futures不会在线程之间移动。这可以在需要原子操作的情况下带来小型的性能提升。

为了达到多线程、工作窃取运行时的类似性能,使用 actix-rt 的应用程序将创建多个,主要不连接的单线程运行时。对于大多数任务具有相似运行时开销的工作负载,这种方法具有良好的性能特性。

缺点是空闲线程不会从非常繁忙、卡住或其它背压线程那里窃取工作。对于不成比例昂贵的任务,应使用 task::spawn_blocking 将其卸载到阻塞任务线程池。

示例

use std::sync::mpsc;
use actix_rt::{Arbiter, System};

let _ = System::new();

let (tx, rx) = mpsc::channel::<u32>();

let arbiter = Arbiter::new();
arbiter.spawn_fn(move || tx.send(42).unwrap());

let num = rx.recv().unwrap();
assert_eq!(num, 42);

arbiter.stop();
arbiter.join().unwrap();

io-uring 支持

通过启用 io-uring 功能,为使用此crate的io-uring提供实验性支持。目前,它是semver豁免的。

请注意,目前使用 actix-rtio-uring 的一些部分尚未实现。特别是,当运行 System 时,仅支持 System::block_on。异步信号处理(Tokio重新导出)。Unix特定信号(Tokio重新导出)。TCP/UDP/Unix绑定(主要是Tokio重新导出)。跟踪时间的实用工具(Tokio重新导出)。任务管理(Tokio重新导出)。

依赖关系

~3–12MB
~110K SLoC