线程与GC

托管线程在GC期间 从是否可以访问托管堆上的对象来说有两种模式

1.抢占模式,,不可以访问托管堆上的对象

2.合作模式,,可以自由访问托管堆上的对象

托管线程在GC期间会有两种模式的切换:

1.主动切换,,比如托管线程调用了非托管代码 那么在GC没有完成前 不能返回和访问托管堆(非托管代码可以访问非托管资源)

2.被动切换,,比如托管线程根据CLR生成的元数据中的GC安全点信息,中断托管线程的执行 切换到抢占模式(使用返回地址劫持的系统函数 或者发送信号的方式),GC完成之后再恢复托管线程到合作模式

 

posted @ 2022-11-20 20:06  那只狐狸  阅读(70)  评论(0编辑  收藏  举报