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 异步
1,112,477 每月下载量
在 不到 384 crates 中使用
37KB
569 行
actix-rt
基于Tokio的单线程异步运行时,适用于Actix生态系统。
有关更多信息,请参阅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-rt
与 io-uring
的一些部分尚未实现。特别是,当运行 System
时,仅支持 System::block_on
。异步信号处理(Tokio重新导出)。Unix特定信号(Tokio重新导出)。TCP/UDP/Unix绑定(主要是Tokio重新导出)。跟踪时间的实用工具(Tokio重新导出)。任务管理(Tokio重新导出)。
依赖关系
~3–12MB
~110K SLoC