线程与GC
托管线程在GC期间 从是否可以访问托管堆上的对象来说有两种模式
1.抢占模式,,不可以访问托管堆上的对象
2.合作模式,,可以自由访问托管堆上的对象
托管线程在GC期间会有两种模式的切换:
1.主动切换,,比如托管线程调用了非托管代码 那么在GC没有完成前 不能返回和访问托管堆(非托管代码可以访问非托管资源)
2.被动切换,,比如托管线程根据CLR生成的元数据中的GC安全点信息,中断托管线程的执行 切换到抢占模式(使用返回地址劫持的系统函数 或者发送信号的方式),GC完成之后再恢复托管线程到合作模式