1

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

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

std::sync::mpscsync_channel(0),但在 中没有等价物tokio::sync::mpscchannel(0)会恐慌。

我怎样才能把这两件事结合起来?标准频道还能用吗?

4

1 回答 1

0

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

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

于 2021-10-07T11:56:22.713 回答