CLR识别线程

时间:2014-06-06 18:56:46

标签: .net multithreading performance clr

此页面http://msdn.microsoft.com/en-us/library/zf749bat(v=vs.110).aspx讨论CLR报告的不同主题号码:物理,逻辑和已识别。

有人可以解释一下线程被CLR“识别”的意义吗?

为什么会导致我识别的线程最大值为2,而物理线程和逻辑线程都在30秒内?

1 个答案:

答案 0 :(得分:5)

CLR不一定知道在进程内运行的所有线程。它对使用CreateThread()的本机代码启动的线程一无所知。承载CLR的COM服务器或本机程序就是常见的例子。例如,有许多COM服务器由.NET类,System.DirectoryServices和System.Management包装。

当这样的线程调用托管代码,事件或回调是通常的情况时,它被迫处理它们。因为它还需要在该线程上执行堆栈遍历,以便在收集垃圾或查找CAS属性时查找托管对象。

此时,这个未知的本机线程变成了一个被识别的"线。看到" 2"没有什么特别的意义。对于那个价值,任何事情都会发生。