gpt4 book ai didi

c++ - 什么时候可以在没有谓词的情况下使用 std::condition_variable?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:29 25 4
gpt4 key购买 nike

如果 std::condition_variable 可以由于虚假唤醒而发出信号(并且我们不能确定我们需要的条件是否真的得到满足),为什么 C++ 标准库提供重载没有谓词的 wait() 方法?什么场景可以使用这种行为?

最佳答案

假设一个复杂条件:A || B。当条件的任何部分为真时,应执行适当的操作,actionAactionB

使用predicate版本,代码如下:

cond.wait(lock, []{return (A || B);});
if(A) {
actionA();
}
else {
actionB();
}

但如果使用非谓词等待,代码可能更快:

while(true)
{
if(A) {
actionA();
break;
}
else if(B) {
actionB();
break;
}
cond.wait(lock);
}

请注意,与第一个变体不同,现在每个条件部分都被评估一次。

还有更复杂的情况,条件不能写在单个表达式中。

关于c++ - 什么时候可以在没有谓词的情况下使用 std::condition_variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35012826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com