gpt4 book ai didi

c++ - 如何在某个时间以毫秒为单位休眠 posix pthread?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:54 27 4
gpt4 key购买 nike

如何在某个时间(以毫秒为单位)让 posix pthread 休眠?哪种方法最适合:使用 usleep 函数或 pthread_cond_timedwait。

最佳答案

一个小故事

您住在旅馆里。您想在几个小时后醒来。如果您想在早上独自使用游泳池,您希望酒店经理仅在有重要事情(来自 pthread_cond_wait 的虚假唤醒)或酒店游泳池是您的(互斥体已被锁定)。

但如果您只想在几个小时后醒来,您可以设置闹钟,当您醒来时,您可以检查闹钟是否响了,或者您可以再睡一个小时。你不关心其他资源,只关心时间是否过去了。您只需 nanosleep()

等等,什么?

如果您只是想 sleep ,请使用 usleepnanosleep sleep 。 pthread_cond_wait 有一个开销,因为它在返回时锁定了一个互斥量。如果该互斥量在一段时间内不可用,那么如果另一个线程出现问题或死锁,您将比最初想要的 sleep 时间更长,甚至永远 sleep 。

也就是说,如果您等待受互斥锁保护的资源并希望在您的线程唤醒后立即获取互斥锁,您应该使用条件变量。

C++11

如果您使用 C++11,请尝试 std::this_thread::sleep_for .但是,不要将 C++11 线程数据结构(线程、互斥量、条件变量)与 POSIX 的数据结构混合使用。

关于c++ - 如何在某个时间以毫秒为单位休眠 posix pthread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19651230/

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