网站建设分为哪几种类型,西安电商平台网站,深圳网站建设软件开发,wordpress谷歌字体当 timeout 参数为 0 时#xff08;如 Sleep(0)#xff09;#xff0c;操作系统会检查可运行队列中是否有高于或等于当前线程优先级的其他就绪线程。如果有#xff0c;当前线程将被移除并放弃处理器时间#xff0c;让其他线程执行。如果没有高优先级的线程#xff0c;当前…当 timeout 参数为 0 时如 Sleep(0)操作系统会检查可运行队列中是否有高于或等于当前线程优先级的其他就绪线程。如果有当前线程将被移除并放弃处理器时间让其他线程执行。如果没有高优先级的线程当前线程将继续执行。当 timeout 参数大于 0 时如 Sleep(1)当前线程会被移除一段时间持续时间约等于 timeout 参数指定的毫秒数。通常情况下系统的时间精度为 10 毫秒所以任何小于 10 毫秒但大于 0 毫秒的睡眠时间都会被向上调整为 10 毫秒。使用 SwitchToThread() 方法时它会让出一个时间切片给其他就绪线程而不考虑它们的优先级如何。
综上所述如果希望当前线程在一段时间内真正休眠最好使用 Sleep(1) 或 SwitchToThread()因为它们可以实际让出处理器时间给其他线程。 Sleep(0) 在没有其他高优先级线程的情况下通常不会让出处理器时间而 SwitchToThread() 会让出时间切片给其他线程实际上SwitchToThread() 会检查系统中是否有其他就绪线程如果有它会主动放弃当前线程的时间切片让其他线程运行。但如果没有其他线程就绪当前线程将继续执行。这个方法旨在鼓励线程主动让出时间切片以减少资源浪费但它并不能保证上下文切换。而 Sleep(1) 会引发线程上下文切换(无论是否有其他就绪线程Sleep(1) 都会引发线程上下文切换因为它要求当前线程放弃 CPU 的使用权并等待指定的时间。这有助于避免线程占用 CPU 时间过多提高系统的性能和资源利用率。)。