【发布时间】:2014-12-08 22:11:31
【问题描述】:
和标题说的差不多。如果线程或进程正在使用可等待计时器并且处于可等待状态,则使用
进行设置DWORD WINAPI WaitForSingleObject(
_In_ HANDLE hHandle,
_In_ DWORD dwMilliseconds
);
调度程序是否会以与doingwork() 不同的方式处理它?即,如果调度程序为线程留出(例如)10ms 的时隙,但是当它查看线程并意识到它处于等待状态时,调度程序是否立即切换回允许下一个任务提前开始其时隙;或者它只是坐在那里并在这 10 毫秒内消耗 CPU 时间,就好像正在使用 sleep() 一样?我已尝试搜索以了解如何解决此问题,但找不到任何东西。
【问题讨论】:
-
当然,调度器不关注等待线程。
-
您有没有想过尝试一下?比如说,启动 32 个线程并让它们都在一个同步对象上等待。然后通过任务管理器查看 CPU 使用情况。它将是 0。
-
我可以,但这就是为什么 SO 来这里是为了节省时间并从愿意提供帮助的人那里获取信息。如果我有时间在世界上,我会整天做实验,但我不会,所以我会尝试一些项目并询问其他项目的问题。
标签: multithreading winapi timer process