2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018 年 10 月 29 日 |
---|---|
0.1.0 | 2018 年 10 月 28 日 |
758 在 并发
18KB
469 行
shared channel
这是 Rust 中多生产者、多消费者通道的实现。
示例
简单使用
use std::thread;
extern crate shared_channel;
use shared_channel::shared_channel;
fn main() {
let (tx, rx) = shared_channel();
for i in 0..10 {
let rx = rx.clone();
thread::spawn(move || println!("{}", rx.recv().unwrap()));
}
for i in 0..10 {
tx.send(i).unwrap();
}
}
预分叉的 Web 服务器
git clone https://github.com/hinohi/rust_shared_channel.git
cd rust_shared_channel
cargo run --example hello_server
请访问 https://127.0.0.1:5000
。其响应看起来像 Hello! I'm No.0
。数字显示线程池工作线程的 ID。
待办事项
- 实现
Reciver
的稳定 API-
try_recv
-
recv
-
recv_timeout
-
iter
-
try_iter
-
- 实现
shared_sync_channel
lib.rs
:
多生产者、多消费者 FIFO 队列通信原语。
此模块是 std::sync::mpsc
的扩展,几乎具有相同的 API。区别在于:
- 定义了一个结构体
SharedReceiver
。这是一个可克隆的结构体(多消费者)。 - 定义了一个与函数
channel
对应的函数shared_channel
。shared_channel
返回一个(Sender, SharedReceiver)
元组,而不是(Sender, Receiver)
元组。Sender
是在std::sync::mpsc
中定义的结构体。 - 还定义了一个与函数
sync_channel
对应的函数shared_sync_channel
。 - 尚未实现
std::sync::mpsc
的某些功能,例如recv_timeout
。
示例
简单使用
let (tx, rx) = shared_channel();
for i in 0..10 {
let rx = rx.clone();
thread::spawn(move || println!("{}", rx.recv().unwrap()));
}
for i in 0..10 {
tx.send(i).unwrap();
}
更多示例,请参阅 examples 目录。