#async-channel #future #spmc #mpsc #mpmc #chan #bounded-channel

async-priority-channel

一个异步通道,按照优先级顺序发送挂起消息

2 个不稳定版本

0.2.0 2024年1月4日
0.1.0 2021年10月22日

#606 in 异步

Download history 47193/week @ 2024-04-05 47572/week @ 2024-04-12 41715/week @ 2024-04-19 16679/week @ 2024-04-26 13462/week @ 2024-05-03 15202/week @ 2024-05-10 13838/week @ 2024-05-17 13538/week @ 2024-05-24 13711/week @ 2024-05-31 11321/week @ 2024-06-07 10299/week @ 2024-06-14 12744/week @ 2024-06-21 8516/week @ 2024-06-28 8881/week @ 2024-07-05 9843/week @ 2024-07-12 9585/week @ 2024-07-19

39,116 每月下载量
用于 41 个 crate (5 直接)

Apache-2.0 OR MIT

26KB
510

async-priority-channel

Build License Cargo Documentation

一个异步通道,按照优先级顺序发送挂起消息。

有两种类型的通道

  1. 有限容量的带界通道。
  2. 无限容量的无界通道。

通道有 SenderReceiver 两端。两端都是可克隆的,可以在多个线程间共享。发送时,传递消息及其优先级。接收时,将返回具有最高优先级的挂起消息。

当所有 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