gpt4 book ai didi

c++ - n>0 的 Sleep(n) 是否将 CPU 时间放弃给其他线程

转载 作者:可可西里 更新时间:2023-11-01 09:58:46 34 4
gpt4 key购买 nike

在 windows 下使用 VC++ 13,联机帮助指出使用 Sleep(0) 会将当前线程时间片的剩余部分放弃给具有同等优先级的任何其他线程。其他值也是如此吗?例如如果我使用 Sleep(1000),则当前线程运行的内核有 1000 毫秒的 CPU 时间可能会被另一个线程使用?我想这是特定于硬件和实现的,因此为了缩小范围,假设是 Intel I5 或更好的 Windows 7 或 8。

问的原因是我有一个线程池类,我正在使用一个额外的监视器线程来报告进度,允许用户中止长进程等...

最佳答案

是的,零只有在表示没有最短等待时间的情况下才具有特殊含义。通常它可以被解释为“我想暂时不 sleep ”,这没有多大意义。这意味着“我想给其他线程运行的机会。”

如果它非零,则保证在指定的时间内不会返回线程,当然在时钟分辨率内。当线程被挂起时,它在系统中处于挂起状态,并且在调度期间不被考虑。对于 0,它不会改变它的状态,所以它仍然准备好运行,并且该函数可能会立即返回。

此外,我认为这与硬件无关,这纯粹是系统级的事情。

关于c++ - n>0 的 Sleep(n) 是否将 CPU 时间放弃给其他线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29535644/

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