mirror of
https://github.com/fafhrd91/actix-net
synced 2025-06-27 06:09:02 +02:00
prepare rt v2.0.0-beta.3
This commit is contained in:
@ -1,4 +1,37 @@
|
||||
//! Tokio-based single-thread async runtime for the Actix ecosystem.
|
||||
//!
|
||||
//! In most parts of the the Actix ecosystem, it has been chosen to use !Send futures. For this
|
||||
//! reason, a single-threaded runtime is appropriate since it is guaranteed that futures will not
|
||||
//! be moved between threads. This can result in small performance improvements over cases where
|
||||
//! atomics would otherwise be needed.
|
||||
//!
|
||||
//! To achieve similar performance to multi-threaded, work-stealing runtimes, applications
|
||||
//! using `actix-rt` will create multiple, mostly disconnected, single-threaded runtimes.
|
||||
//! This approach has good performance characteristics for workloads where the majority of tasks
|
||||
//! have similar runtime expense.
|
||||
//!
|
||||
//! The disadvantage is that idle threads will not steal work from very busy, stuck or otherwise
|
||||
//! backlogged threads. Tasks that are disproportionately expensive should be offloaded to the
|
||||
//! blocking thread-pool using [`task::spawn_blocking`].
|
||||
//!
|
||||
//! # Examples
|
||||
//! ```
|
||||
//! 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();
|
||||
//! ```
|
||||
|
||||
#![deny(rust_2018_idioms, nonstandard_style)]
|
||||
#![allow(clippy::type_complexity)]
|
||||
|
Reference in New Issue
Block a user