2 个版本
0.1.1 | 2022 年 8 月 13 日 |
---|---|
0.1.0 | 2022 年 6 月 7 日 |
#894 在 并发
16KB
307 行
threadbeam
一个简单的、专门的通道类型,用于从新创建的线程中传输数据。
用法
首先,在 Cargo.toml 中将 threadbeam
添加到你的 crate 的依赖项中
[dependencies]
threadbeam = "0"
示例
let (tx, rx) = threadbeam::channel();
std::thread::spawn(move || {
tx.send(String::from("Hello, world!"));
});
let hello = rx.recv();
assert_eq!(hello.as_deref(), Some("Hello, world!"));
let (hello, thread) = threadbeam::spawn(move |tx| {
tx.send(String::from("Hello, world!"));
// your code...
String::from("Thread completed!")
});
assert_eq!(hello.as_deref(), Some("Hello, world!"));
assert_eq!(thread.join().ok().as_deref(), Some("Thread completed!"));
parking_lot
要使用 parking_lot
而不是标准库中的 Condvar
和 Mutex
实现,在 Cargo.toml 中启用 parking_lot
功能
[dependencies]
threadbeam = { version = "0", features = ["parking_lot"] }
no_std
通过 spin
对于 no_std
环境,在 Cargo.toml 中启用 no_std
功能
这将使用 spin
作为 Mutex
实现的提供者。
[dependencies]
threadbeam = { version = "0", features = ["no_std"] }
依赖
~0–5MB