Rust:在另一个 mpsc 之前自动耗尽一个 mpsc

问题描述 投票:0回答:0

我在一个线程中有两个

std::sync::mpsc
接收器,一个优先接收器和一个常规接收器。有什么方法可以原子地确保在使用常规队列之前排空优先级队列?我确保在
Sender
上存在先行关系,因此优先级操作总是先发送。

这是我目前的解决方案,我几乎可以肯定这是不正确的:

loop {
    for priority_op in priority_rx.try_iter() {
        match priority_op {
            ...
        }
    }
    
    // A priority op, and then a regular op could arrive here

    let op = rx.recv().unwrap();
    match op {
        ...
    }
}

如果这是不可能的,我可以使用什么替代架构(除了只有一个队列)来实现这种行为?

multithreading rust atomic
© www.soinside.com 2019 - 2024. All rights reserved.