gpt4 book ai didi

c++ - 为什么允许 pthread_cond_wait() 有时获得虚假唤醒会提高性能?

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:41 27 4
gpt4 key购买 nike

我知道 pthread_cond_wait() 被记录为获得虚假唤醒,调用者必须检查该条件,这样做的动机是允许 pthread_cond_wait() 的实现具有更好的性能并强制调用者创建更多健壮的代码。

但是,除了提到避免代价高昂的竞争条件外,我还没有看到任何人具体说明这提供的性能机会。

有人可以详细说明会出现哪些竞争条件以确保没有虚假唤醒,以及哪些硬件架构会导致出现此类情况?

最佳答案

无法保证您的线程在收到信号后会立即运行。它只是被标记为“就绪”并且将在系统调度程序的支配下运行。在它变得可调度和实际调度的时间之间,另一个线程可能已经改变了底层条件。

例如:

线程 A:等待条件变量。

线程 B:更新状态。信号条件变量。

线程 C:重置状态

线程 A:唤醒。检查底层状态,它没有改变。

关于c++ - 为什么允许 pthread_cond_wait() 有时获得虚假唤醒会提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9995551/

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