繁体   English   中英

Windows Scheduler是否跳过处于等待状态的线程? (等待的计时器)

[英]Does the windows scheduler skip threads that are in a waitable state? (waitable timer)

就像标题所说的一样。 如果线程或进程正在使用等待计时器并且处于等待状态,请使用

DWORD WINAPI WaitForSingleObject(
  _In_  HANDLE hHandle,
  _In_  DWORD dwMilliseconds
);

调度程序是否以不同于work()的方式对待它? 即,如果调度程序为线程预留了(例如)10ms的时隙,但是当它查看线程并意识到它处于等待状态时,调度程序会立即切换回以允许下一个任务尽早启动其时隙; 还是只是坐在那里并在那10毫秒内消耗CPU时间,就好像正在使用sleep()一样? 我尝试搜索以找出解决方法,但找不到任何东西。

等待的线程无法执行。 如果您考虑一下,没有什么要执行的-线程正在等待,因此如果分配了线程,它与CPU时间没有任何关系。

我认为您可能会感到困惑,因为您认为实际检查对象是否准备就绪的是线程 因此,我想像的是, WaitForSingleObject()是一个连续轮询的函数,并且正在线程的上下文中运行,并且调度程序将时间分配给线程,以便线程本身可以轮询对象是否准备好了。

事实并非如此 -内核正在检查那些对象,并且线程实质上已暂停。 对象准备就绪后,调度程序将“激活”线程并将其调度为执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM