gpt4 book ai didi

c++ - std::condition_variable::wait 是如何实现的?

转载 作者:行者123 更新时间:2023-11-27 23:36:03 32 4
gpt4 key购买 nike

我试图搜索 std::conidition_variable::wait 是如何在我本地机器上的标准库中实现的,我可以看到 wait_unitl 但我找不到等待

我的问题是,wait 函数是如何在内部实现的,如何使线程无限期休眠,它是使用长时间休眠还是完全不同的操作系统特定的东西?

谢谢!

最佳答案

抢占式多线程是一个主要由操作系统控制的进程。它决定哪些线程获得时间片和/或分配给哪些内核,等等。因此,对于大多数低级线程原语(互斥量、条件变量等),真正的工作是在操作系统调用中完成的。

是的,理论上您可以实现条件变量,只需要原子访问和定时线程挂起。但是,它的性能会非常差。现代操作系统知道线程何时在等待条件,并且可以在满足条件时“立即”唤醒该线程。您的机制要求等待线程等到某个特定时间过去。

另外,您将有一大堆必须检查的虚假唤醒,因此无缘无故地使用线程时间。基于操作系统的实现将大大减少虚假唤醒。

关于c++ - std::condition_variable::wait 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59122044/

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