“睡眠”功能和暂停计数

时间:2011-01-05 18:18:59

标签: c++ time sleep


我想知道某个进程是否正在休眠(C ++ / Windows) 我试图使用暂停计数来执行此操作并在检查之前暂停处理 分析过程。

我做这样的事情:

SuspendThread(threadHandle);

... Do Some Stuff ...

int suspended = ResumeThread(threadHandle);
if (suspended > 1)
    m_isSleeping = true;

根据MSDN:http://msdn.microsoft.com/en-us/library/ms685086%28v=vs.85%29.aspx
如果某个流程暂停," ResumeThread"返回值> 0
在我的情况下,这个过程是一个休眠过程,所以我希望暂停计数是[My Call To SuspendThread] + [" Sleep"过程中的方法] = 2
但我一直得到:ResumeThread(threadHandle)== 1

有人知道为什么会这样吗? 谢谢:))

3 个答案:

答案 0 :(得分:2)

Sleep中的线程未暂停,因此返回值为1

答案 1 :(得分:1)

你混淆了线程和进程。 ResumeThreadSuspendThread不对进程句柄进行操作,它们在线程句柄上运行。此外,Sleep不会更改流程的暂停计数,只有ResumeThreadSuspendThread会更改。如果您正在尝试检测线程当前是否在Sleep来电,那么您做错了。

答案 2 :(得分:0)

除了其他人所说的,你的SuspendThread调用不能保证立即暂停线程,它可以运行一段时间,你可以在线程仍在运行时实际调用ResumeThread(参见详情:http://www.dcl.hpi.uni-potsdam.de/research/WRK/2009/01/what-does-suspendthread-really-do/