我怎么能得到一个相当于sync_channel(0)在' tokio ' ?



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

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

std::sync::mpsc中有sync_channel(0),但tokio::sync::mpsc中没有等价物。channel(0)会慌的

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

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

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

相关内容

  • 没有找到相关文章

最新更新