线程开销(.net)

我们经常使用多线程提升程序执行速度,那是不是线程越多越好,显然答案是否定的。因为线程本身也会有不小的开销。开销主要体现在两方面:1、空间开销,2、时间开销

空间开销

空间开销主要体现在以下四方面:

  1. 线程内核对象(thread kernel object);
  2. 线程环境块(thread environment block,TEB);
  3. 用户模式栈(user-mode stack);
  4. 内核模式栈(kernel-mode stack);

空间开销-线程内核对象

1.定义:OS为系统中创建的每个线程都会分配并初始化这种数据结构之一
2.内容:

  1. 数据结构包含一组对线程进行描述的属性
  2. 数据结构还包括所谓的线程上下文。上下文是包含CPU寄存器集合的内存块

3.空间:不同的CPU架构,线上上下文的大小不同,如下图所示:
在这里插入图片描述

空间开销-线程环境块

1.定义:TEB是用户模式(应用程序能快速访问的地址空间)中分配和初始化的内存块
2.内容:

  1. TEB包含线程异常处理链首
  2. TEB还包含线程的“线程本地存储”数据,以及由GDI(Graphics Device Interface,图形设备接口)和OpenGL图形使用的一些数据结构

3.空间:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值