Rust 当两个条件变量之一发出通知时,是否可以等待并返回?
Rust 当两个条件变量之一发出通知时,是否可以等待并返回?,rust,mutex,condition-variable,Rust,Mutex,Condition Variable,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(); 有什么东西我可以放在这里以正确的方式等待吗?我在想解决这个问题的最简单方法 我的想法是让第三个条件变量等待与其他条件
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();
有什么东西我可以放在这里以正确的方式等待吗?我在想解决这个问题的最简单方法
我的想法是让第三个条件变量等待与其他条件相关的两个变量,但我不知道如何做到这一点。创建第三个
Condvar
,记住每次通知前两个变量时都要通知它
无论如何,请考虑使用一个
Condvar
。由于它们可能会错误地醒来,因此您已经需要检查“谓词”,即互斥体是否确实有任何相关更改创建第三个Condvar
,并记住每次通知前两个中的任何一个时都要通知它
无论如何,请考虑使用一个Condvar
。由于它们可能会错误地醒来,因此您已经需要检查“谓词”,即互斥体是否确实有任何相关更改