如何查看Win32线程是正在运行还是处于挂起状态?
我找不到任何给出线程状态的Win32 API.那么如何获得线程状态?
我认为 – 原来 – 这个信息没有提供,因为提供这个信息的任何API会是误导和无用的.
原文链接:/windows/371381.html考虑两种可能的情况 – 当前线程已暂停线程的兴趣.当前线程中的代码了解挂起的状态,并且应该能够共享它,以便内核团队不需要添加一个API.
第二种情况,系统中的一些其他/第三个线程已经暂停了兴趣线程(没有办法跟踪哪个线程).现在你有一个竞争条件 – 其他线程可以在任何时候 – 暂停线程的兴趣和从API收集的信息是无用的 – 你有一个值,表示线程被暂停,而事实上,而不是.
道德的故事 – 如果你想知道一个线程被暂停 – 挂起它:从SuspendThread的返回值是线程的以前的暂停计数.现在你知道一些有用的东西 – 线程暂停 – 这是有用的.或者它不是(但现在是)暂停.无论哪种方式,线程的状态现在都是确定性的,所以你可以在理论上做出一些基于这一点的智能选择 – 无论是ResumeThread还是暂停.