【问题标题】:Is it possible to wait and return when one of two condition variables notifies?当两个条件变量之一通知时,是否可以等待并返回?
【发布时间】:2026-01-28 18:30:02
【问题描述】:

Condvar 在 Rust 中的用法是这样的:

let pair = Arc::new((Mutex::new(true), Condvar::new()));
//...
let (lock, cvar) = &*pair;
let _guard = cvar.wait_while(lock.lock().unwrap(), SOMETHING_HERE).unwrap();

有什么我可以放入SOMETHING_HERE 的东西以正确的方式等待吗?我正在考虑解决这个问题的最简单方法。

我的想法是让第三个条件变量等待与其他条件相关的两个变量,但我不知道该怎么做。

【问题讨论】:

    标签: rust mutex condition-variable


    【解决方案1】:

    创建第三个Condvar,并记住每次通知前两个时都要通知它。

    考虑使用Condvar。由于它们可以虚假唤醒,因此您已经需要检查“谓词”,即Mutex 是否确实有任何相关更改。

    【讨论】:

      最近更新 更多