原文:http://www.blogcn.com/User8/flier_lu/blog/24143356.html
Yun Jin 的 blog 上最近有两篇有趣的文章,介绍了 CLR 中线程概念的内部实现以及缺省提供的特殊线程。
Thread, System.Threading.Thread, and !Threads (I)
Special threads in CLR
其中提到 EE 在启动时会初始化一个专用的调试线程。
2. Debugger helper thread. As its name suggests, this thread helps interop debugger to get information of the managed process and to execute certain debugging operations. The thread is created when EE initializes debugger during start up. In Rotor, the thread proc for this thread is DebuggerRCThread::ThreadProcStatic (debug\ee\Rcthread.cpp). Also see Mike Stall's blog about impact of this helper thread。
与传统的 Native Win32 程序不同,CLR 对调试的支持是通过 In-Proc 模式提供的。Mike Stall 在其 blog 上介绍了这种模式的优劣:
Implications of using a helper thread for debugging
首先,我们来看看运行时的调试支持情况。
用 windbg 启动一个 CLR 程序后,可以用 ~ 命令和 sos 的 ~threads 命令,看看 Native 线程和 CLR 线程的对应情况如下:
|
|
|
|
|
|
|