如何在 `tokio` 中获得等同于 sync_channel(0) 的值?

How can I get an equivalent to sync_channel(0) in `tokio`?

我有一个项目需要大量 IO 绑定线程(可能有数百个),这使得 tokio 运行时比标准线程更理想。

但是,我还需要同时阻止发送方和接收方的集合点通道。

std::sync::mpscsync_channel(0),但 tokio::sync::mpsc 中没有对等物。 channel(0) 会恐慌。

如何将这两个东西结合起来?标准渠道仍然有效吗?

标准库通道不可等待,因此它们会阻止执行器。作为一种快速解决方法,您可以将频道操作包装在 tokio::task::spawn_blocking() 中,即将 tx.send(message) 替换为 spawn_blocking(|| tx.send(message)).await

更好的选择是使用支持异步会合通道的库,例如 flume