NET目前的每一个线程对应的是windows系统的物理线程,每个线程都会包含一下一些要素:
1.线程内核对象(Thread kernel object),OS为系统中每一个线程分配初始化的数据结构,包含线程上下文Thread Context(一个内存区域包含CPU寄存器集合);
2.线程环境块(Thread Environment block),包含了线程的异常处理链首,线程每次进入try块,都会在链首插入一个节点,退出try块时,会从链中删除节点。还包含了一些其他的数据;
3.用户模式栈(user-mode stack),包含传给方法的局部变量和实参,以及方法的返回地址;
4.内核模式栈(kernel-mode stack),运用程序调用内核模式函数时,会使用内核模式栈,主要是处于安全的原因考虑,用户模式的代码传给内核模式的代码,会被从用户模式栈拷贝到内核模式栈中。
线程执行上下文(Execute context):每一个线程都关联了一个执行上下文数据结构。包括的东西有安全设置(压缩栈,Thread的principle属性和windows的身份 ),宿主设置以(System.Threading.HostExecutionContextManager)及逻辑调用上下文数据(System.Runtime.Remoting.Messaging.ExecutionContext)。线程执行代码的时候,有些操作会受到线程执行上下文的限制,例如安全设置的影响。理想情况下,在一个线程中调用另外一个线程,