1
15
我认为-最初-没有提供此信息,因为提供此信息的任何API都会误导和无用。 考虑两种可能的情况-当前线程已挂起感兴趣的线程。当前线程中的代码 知道 关于挂起状态,应该能够共享它,这样内核团队就不需要添加API。 第二种情况,系统中的其他/a第三个线程已挂起感兴趣的线程(并且无法跟踪是哪个线程)。现在您有了一个争用条件-其他线程可以随时取消挂起感兴趣的线程,而从API收集的信息是无用的-您有一个值,指示线程实际上是挂起的,而不是挂起的。 故事的寓意——如果你想知道一个线程被挂起——挂起它:挂起线程的返回值是该线程的前一个挂起计数。现在你知道了一些有用的东西——线程曾经还是挂起的——这很有用。或者它没有(但现在)被暂停。不管怎样,线程的状态现在是确定的,所以理论上你可以基于它做出一些明智的选择——是恢复方法,还是让它保持挂起状态。 |
2
3
您可以通过使用SystemProcessesAndThreadsInformation(整数值5)的值调用ntQuerySystemInformation()来获取此信息。 如果你想要一个你能用这些信息做什么的例子,看看 Thread Status Monitor . |
3
2
WMI的
Win32_Thread
类有
您将需要线程的ID来直接获取正确的实例(wmi对象的handle属性是线程ID)。 编辑:给定此PowerShell查询:
给予 Count Name Group ----- ---- ----- 6 2 {, , , ...} 966 5 {, , , ...} WMI对win32有不同的“挂起”定义。 |
4
2
虽然它没有文档记录-虽然它应该是imho,但是如果调用waitForSingleObject,那么如果线程被挂起,它将返回wait-awarded。此外,如果线程已终止,则其句柄将处于信号状态。 最让我恼火的是当有人回答你的问题,告诉你为什么你不应该回答你的问题…或者开始提问 为什么? 你想这么做。当有人在谷歌上发现这个问题时,原因是 为什么? 不一样,因此答案会使自己对其他人毫无用处。 |
5
1
在Windows 7中,您可以使用 QueryUmsThreadInformation . (ums代表用户模式调度)。
见
here
对于
|
6
1
您可以使用如下代码获取线程挂起计数:
但是,正如前面所说,这是不准确的。 此外,挂线也是邪恶的。 |
7
0
我认为这里的州被称为
这可以通过使用变量来处理,该变量可以告诉线程是否正在实际运行或等待事件发生。 当考虑线程池时,如果有N个线程,并且根据每个线程的运行状态,可以将任务分配给空闲线程。 |
8
0
是:可以获取线程状态并确定它是否被挂起。 不,你不需要Windows7。 我在StackOverflow上发布了我的工人阶级: How to get thread state (e.g. suspended), memory + CPU usage, start time, priority, etc 此类需要Windows 2000或更高版本。 |
Community wiki · 需要改变的用户界面模式? 1 年前 |
LITzman · 使用状态处理颜色主题更改 1 年前 |
Community wiki · 进程。退出(0):输出消失? 1 年前 |
arsaces · 将文本添加到特定文件的末尾 2 年前 |
YGranja · 库<图形。h> MinGW-W64缺少 2 年前 |
Felipe Palermo · Ctrl键仍被按下,按键事件() 2 年前 |
HCJ · win cmd中的批处理脚本循环 2 年前 |