当两个条件变量之一通知时,是否可以等待并返回?

Rust中Condvar的用法如下:

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中以正确的方式等待的东西吗?我正在考虑解决这个问题的最简单方法。

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

iCMS 回答:当两个条件变量之一通知时,是否可以等待并返回?

创建第三个Condvar,并记得在每次通知前两个通知中的一个时通知它。

考虑仍然使用一个Condvar。由于它们可能会虚假地唤醒,因此您已经需要检查“谓词”,即Mutex是否实际上有任何相关更改。

本文链接:https://www.f2er.com/1919992.html

大家都在问