如何在具有不同优先级的多个 MPSC 通道上等待以创建有序队列?

zin*_*ino 6 channel rust

我有一个线程在通道上等待:

for msg in rx {}
Run Code Online (Sandbox Code Playgroud)

我想在两个通道上等待,一个具有高优先级,一个具有低优先级。for 循环应该先从高队列中获取项目,然后再查看低队列。

我遇到的问题:

  • 我可以阻塞一个通道,或者try_recv在循环中使用两个通道,这是低效的。

  • Select对于 MPSC 通道来说是“可疑的”

  • 我无法使用crossbeam_channel因为我想先清除高队列,然后再从低队列中获取,但select!声明:

    如果同时有多个操作准备就绪,则随机选择其中一个

实现这一点的最佳方法是什么?