C++ 条件变量-C+中的等待函数的用途+;11

C++ 条件变量-C+中的等待函数的用途+;11,c++,c++11,condition-variable,C++,C++11,Condition Variable,我不熟悉条件变量、多线程和互斥体,对此我有一个基本问题 引用en.cppreference.com on wait_for-“在唤醒条件变量或在指定的超时持续时间之后阻止当前线程” 为什么要在指定的持续时间后取消阻止当前线程。条件变量的基本用途是在“条件”发生时通知。如果每500毫秒唤醒一次线程,是否会导致开销?虚假唤醒也内置为一种安全机制,以防通知呼叫未发生/失败等情况 我显然缺少一些基本的东西,但不确定是什么。感谢您的帮助 如果您希望等待事件发生,而不是无限期地发生,则使用这种方法 可能在超

我不熟悉条件变量、多线程和互斥体,对此我有一个基本问题

引用en.cppreference.com on wait_for-“在唤醒条件变量或在指定的超时持续时间之后阻止当前线程”

为什么要在指定的持续时间后取消阻止当前线程。条件变量的基本用途是在“条件”发生时通知。如果每500毫秒唤醒一次线程,是否会导致开销?虚假唤醒也内置为一种安全机制,以防通知呼叫未发生/失败等情况


我显然缺少一些基本的东西,但不确定是什么。感谢您的帮助

如果您希望等待事件发生,而不是无限期地发生,则使用这种方法

可能在超时过期后,您希望通知用户获取结果所需的时间比预期的时间长。也许您希望触发取消提供结果的任务

正如您正确指出的那样,这会导致额外的开销,因此只有在您确实需要对过期超时做出合理反应的情况下,才有必要使用它而不是
wait


虚假唤醒与其说是一种安全机制,不如说是某些硬件架构强加的一种不幸的必要性。在一个完美的世界中(即,您只使用谓词调用
wait
函数的世界),从来不会出现虚假的唤醒。

这种情况的用例是如果您希望等待事件发生,但不是无限期的

可能在超时过期后,您希望通知用户获取结果所需的时间比预期的时间长。也许您希望触发取消提供结果的任务

正如您正确指出的那样,这会导致额外的开销,因此只有在您确实需要对过期超时做出合理反应的情况下,才有必要使用它而不是
wait

虚假唤醒与其说是一种安全机制,不如说是某些硬件架构强加的一种不幸的必要性。在一个完美的世界中(即,在这个世界中,您只使用谓词调用
wait
函数),从来不会出现虚假的唤醒

如果线程被唤醒,比如说,每500毫秒唤醒一次

这不是
等待
的工作方式。让我们暂时忽略虚假的唤醒。该功能将在收到通知或计时器过期时唤醒。另一种方法是:等待通知,但不要超过
rel\u time
time

例如,当通知机制可能崩溃时,它可以用来避免无限等待。或者,如果通知没有及时发出,您需要采取行动

虚假唤醒是现代软件/硬件体系结构现实中不必要的副作用。解释得很好

如果线程被唤醒,比如说,每500毫秒唤醒一次

这不是
等待
的工作方式。让我们暂时忽略虚假的唤醒。该功能将在收到通知或计时器过期时唤醒。另一种方法是:等待通知,但不要超过
rel\u time
time

例如,当通知机制可能崩溃时,它可以用来避免无限等待。或者,如果通知没有及时发出,您需要采取行动

虚假唤醒是现代软件/硬件体系结构现实中不必要的副作用。解释得很好