我想知道某个进程是否正在休眠(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
有人知道为什么会这样吗? 谢谢:))
答案 0 :(得分:2)
Sleep
中的线程未暂停,因此返回值为1
答案 1 :(得分:1)
你混淆了线程和进程。 ResumeThread
和SuspendThread
不对进程句柄进行操作,它们在线程句柄上运行。此外,Sleep
不会更改流程的暂停计数,只有ResumeThread
和SuspendThread
会更改。如果您正在尝试检测线程当前是否在Sleep
来电,那么您做错了。
答案 2 :(得分:0)
除了其他人所说的,你的SuspendThread
调用不能保证立即暂停线程,它可以运行一段时间,你可以在线程仍在运行时实际调用ResumeThread
(参见详情:http://www.dcl.hpi.uni-potsdam.de/research/WRK/2009/01/what-does-suspendthread-really-do/)