2 个不稳定版本
0.2.0 | 2024年1月4日 |
---|---|
0.1.0 | 2021年10月22日 |
#606 in 异步
39,116 每月下载量
用于 41 个 crate (5 直接)
26KB
510 行
async-priority-channel
一个异步通道,按照优先级顺序发送挂起消息。
有两种类型的通道
- 有限容量的带界通道。
- 无限容量的无界通道。
通道有 Sender
和 Receiver
两端。两端都是可克隆的,可以在多个线程间共享。发送时,传递消息及其优先级。接收时,将返回具有最高优先级的挂起消息。
当所有 Sender
或所有 Receiver
被丢弃时,通道变为关闭。当通道关闭时,无法再发送消息,但可以继续接收剩余的消息。
还可以通过调用 Sender::close()
或 Receiver::close()
手动关闭通道。API 和大部分文档基于 async_channel。
示例
let (s, r) = async_priority_channel::unbounded();
assert_eq!(s.send("Foo", 0).await, Ok(()));
assert_eq!(s.send("Bar", 2).await, Ok(()));
assert_eq!(s.send("Baz", 1).await, Ok(()));
assert_eq!(r.recv().await, Ok(("Bar", 2)));
许可证:Apache-2.0 OR MIT
依赖项
~355KB