gpt4 book ai didi

c++ - 条件变量中 wait_for 函数的用途 - C++11

转载 作者:行者123 更新时间:2023-11-28 01:26:10 28 4
gpt4 key购买 nike

我是条件变量、多线程和互斥量的新手,对此我有一个基本问题。

引自 en.cppreference.com 关于 wait_for - “阻塞当前线程,直到条件变量被唤醒或在指定的超时持续时间之后”

为什么要在指定的持续时间后解除当前线程的阻塞。条件变量的基本目的是在“条件”发生时发出通知。如果线程每 500 毫秒被唤醒一次,它不会导致开销吗?虚假唤醒也作为一种安全机制内置,以防通知调用没有发生/失败等。

我显然在这里遗漏了一些基本的东西,但不确定它是什么。任何帮助表示赞赏。

最佳答案

此用例是您希望等待事件发生,但不是无限期发生。

也许超时过后,你想通知用户获取结果的时间比预期的要长。也许您想触发取消提供结果的任务。

正如您正确指出的那样,这会导致额外的开销,因此只有当您确实有一些合理的事情可以对过期的超时使用react时,才使用它而不是 wait 才有意义。

虚假唤醒与其说是一种安全机制,不如说是某些硬件架构强加的一种不幸的必需品。在一个完美的世界中(即一个你只用谓词调用 wait 函数的世界),永远不会发生虚假唤醒。

关于c++ - 条件变量中 wait_for 函数的用途 - C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53722241/

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