栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

(精华)2020年12月23日 .NET Core 多线程底层详解(基础知识篇)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(精华)2020年12月23日 .NET Core 多线程底层详解(基础知识篇)

.NET Core-多线程主要分为原生线程和托管线程

一:原生线程,操作系统负责线程的创建、运行、切换、终止,

线程切换有两种方式:
1、主动切换,线程对应的任务主动要求暂停线程的运行
2、被动切换,强制切换,抢占,时间片
保存某个时间点上的CPU中各个寄存器的值的数据结构被称为上下文


RSP寄存器,ESP(X86)

二:托管线程,基于原生线程,由.NET管理的线程被称为托管线程

Thread对象(托管线程对象)

非托管线程在原生线程上首次调用托管代码时,

  • .NET程序运行后在主线程上调用Main函数时。托管线程对象中包含多种数据结构:线程本地存储托管函数
  • 非托管函数的切换记录
  • 分配上下文
  • 执行上下文
  • 同步上下文

.NET运行时会把所有的托管线程对象记录到一个内部的列表结构里
托管线程中的两种模式:抢占模式(不能访问托管堆上的对象)、合作模式(可以自由的访问托管堆上的对象)。
GC在执行垃圾回收的时候,需要找到所有存活的对象,并且清理没有被引用的对象。
负责执行扫描与清理对象的GC线程
负责分配对象或改变对象间引用关系的其它线程
同时运行
主动切换线程自己切换自己的模式,托管代码通过PInvoke调用非托管代码时切换到抢占模式,返回到托管代码切换回合作模式
被动切换,线程1切换其它线程
GC安全点:GC信息、

返回地址劫持的技术
托管线程对象都关联了一个TLB的表,TLM表
TLM Thread Local Module
TLB Thread Local Block

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/959992.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号