本页http://msdn.microsoft.com/en-us/library/zf749bat(v=vs.110).aspx讨论由CLR报告的不同线程号:物理、逻辑和识别。
有人能解释一下CLR对线程的“识别”意味着什么吗?
为什么在物理线程和逻辑线程都在30岁的时候,我的可识别线程会在2的时候达到最大值?
发布于 2014-06-06 12:40:33
CLR不一定知道进程内运行的所有线程。它无法了解由本机代码使用CreateThread()启动的线程的任何信息。托管CLR的COM服务器或本机程序就是常见的例子。有许多COM服务器是由.NET类包装的,例如System.DirectoryServices和System.Management。
当这样的线程对托管代码进行调用时,通常情况是事件或回调时,就会被迫处理它们。因为它还需要在该线程上执行堆栈遍历,以便在收集垃圾或查找CAS属性时找到托管对象。
此时,这个未知的本机线程就变成了一个“可识别的”线程。没有什么特别的意义,看到"2“的价值,任何事情都会发生。
https://stackoverflow.com/questions/24088844
复制