我如何知道线程是否在Windows CE下暂停

Sma*_*acL 7 c c++ multithreading windows-mobile

我可以使用C或Visual C++在Windows CE下获取线程挂起计数,而无需调用resume或suspend函数吗?我能看到的唯一方法就是这样

int Count = SuspendThread(ThreadHandle);  
ResumeThread(ThreadHandle);
Run Code Online (Sandbox Code Playgroud)

这有几个问题,首先,我宁愿不挂起线程,其次,如果线程正在运行内核代码,挂起可能会失败.我可以解决这个问题,但我觉得应该有更优雅的解决方案.我也可以用它来反转它

int Count = ResumeThread(ThreadHandle);
SuspendThread(ThreadHandle);  
Run Code Online (Sandbox Code Playgroud)

但这有类似的问题.从句柄获取挂起计数的任何好的替代方法?

ral*_*nja 4

我有一个组合解决方案。使用 WaitForSingleObject() 来确定线程是否被挂起。

如果没有挂起,则挂起计数显然为0。

如果它被挂起,可以安全地调用 SuspendThread() 来获取挂起计数。因为它已经暂停了,所以你不会拖延任何事情。