rust 如何在'时雄'中得到sync_channel(0)的等价值?

kmpatx3s  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个项目,需要大量的IO绑定线程(可能有数百个),这使得tokio运行时比标准线程更理想。
但是,我还需要同时阻止发送者和接收者的会合通道。
std::sync::mpsc具有sync_channel(0),但tokio::sync::mpsc中没有对等项。channel(0)将死机。
我如何将这两个功能结合起来?标准通道是否仍然有效?

t98cgbkg

t98cgbkg1#

标准库通道是不可等待的,所以它们会阻塞执行程序。作为一个快速的解决方案,你可以将通道操作 Package 在tokio::task::spawn_blocking()中,即用spawn_blocking(|| tx.send(message)).await替换tx.send(message)
更好的选择是使用支持异步集合通道的库,如flume

相关问题