< 返回版块

frostyplanet 发表于 2020-07-01 08:34

Tags:async, channel

去年刚开始用 rust 的时候很奇怪为什么社区没支持 async 的 mpmc, 可能由于那时候 async-await 还是在nightly 状态, 所以自己基于 crossbeam 来撸了一个. 经过近一年的测试, 已经达到稳定, 所以发布出来. (刚得知 crossbeam 作者前几天刚发了个 async-channel 但还没来得及仔细看)

https://crates.io/crates/crossfire

可以到 https://github.com/qingstor/crossfire-rs 提 issue.

我另外在 reddit 也开了个帖子 https://www.reddit.com/r/rust/comments/hi9vhj/crossfire_yet_another_async_mpmcmpsc_based_on/

这个 crate 最大的特点是支持线程语境和 async 语境的通讯 (async->async, async->blocking, blocking->async). 并且一收一发的性能能够达到千万级 (tokio 和 std 的 channel 都只是百万级), 某些情形下能接近 crossbeam 本身的性能.

由于之前都是内部使用并且工作比较忙, 文档和 example 还在完善中, 不过暂时可以看着测试用例.

目前我主要在 tokio 下使用, 比较新的 async-std 还没怎么了解过, 如果有感兴趣的朋友也可以试用一下.

评论区

写评论
zhuxiujia 2020-07-03 10:24

中文名称-穿越火线 哈哈哈哈哈

Mike Tang 2020-07-02 20:14

是的,stjepang 真大佬。

--
👇
frostyplanet: 看了一下 crossbeam的作者又弄了个新的 runtime 叫 smol, 还有一堆 async-* 打头的 crate, 那才是真的大佬. 需要学习的运行时又多了一个...

作者 frostyplanet 2020-07-02 18:02

看了一下 crossbeam的作者又弄了个新的 runtime 叫 smol, 还有一堆 async-* 打头的 crate, 那才是真的大佬. 需要学习的运行时又多了一个...

dongdong 2020-07-02 11:19

大佬!

pader 2020-07-01 20:44

我只能说:牛皮!

spacemeowx2 2020-07-01 15:51

点赞

cnwzhjs 2020-07-01 11:48

👍 赞~

Mike Tang 2020-07-01 10:24

bull beer.

1 共 8 条评论, 1 页