【发布时间】:2021-11-11 16:32:16
【问题描述】:
我尝试将线程中的 sleep() 函数更改为 pthread_cond_timedwait(),以便在需要时可以从另一个线程停止暂停。我的问题是关于效率。因为据我了解,在使用 sleep() 时,线程处于被动等待状态,因此不会发生额外的 cpu 使用。调度程序如何处理互斥锁线程?它与 sleep() 相同还是在这种情况下正在积极等待?因为我可能会使用很多线程,这些线程会被暂停很长一段时间(几分钟、几小时或几天),我担心我可能会使用不必要的 CPU 时间。
【问题讨论】:
-
问题不清楚。您对条件变量或互斥锁感兴趣吗?
-
对不起,我的理解是,如果一个线程正在等待一个条件变量,它就处于互斥锁中。我对整个概念很陌生,所以我可能错了@SergeyA
-
并非如此。它正在等待变量已更改的信号。互斥锁只是辅助性的,因为它可以防止多个线程在条件发出信号后尝试访问该变量。
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: c multithreading mutex sleep cpu-usage