首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >9-线程概念与多线程模型

9-线程概念与多线程模型

作者头像
Ywrby
发布2022-10-27 13:08:09
发布2022-10-27 13:08:09
3560
举报
文章被收录于专栏:YwrbyYwrby

线程

概念

线程是一个基本的CPU执行单元,也是程序执行流的最小单元

引入线程后,不仅是进程间可以并发执行,一个进程的不同线程之间也可以并发执行,提高了系统的并发度,使得一个进程内可以并发执行多项任务(例如QQ可以同时视频聊天,发送文件等等)

引入线程后,进程只作为除CPU以外的系统资源的分配单元(如打印机,内存地址空间等),即除CPU以外的系统资源还是直接分配给进程而不是某个线程

引入线程机制后,发生的变化

线程的属性

  • 线程是处理机调度的单位
  • 多CPU计算机中,各个线程可以占用不同的CPU
  • 每个线程都有一个线程ID,和线程控制块(TCB)用来进行区分
  • 线程同样有就绪,阻塞,运行三种基本状态
  • 线程几乎不拥有系统资源
  • 同一进程的不同线程间可以共享进程的资源
  • 由于同一进程的不同线程间共享内存地址空间,所以各个线程间通信甚至无需系统干预
  • 同一进程中的线程间进行切换,不会引起进程切换
  • 不同进程中的线程进行切换,会引起进程切换
  • 切换同进程中的线程,系统开销很小
  • 切换进程,开销较大

线程的实现方式

用户级线程

用户级线程由应用程序通过线程库实现,所有的线程管理工作都是由应用程序负责的(线程的创建,撤销,切换等等)

用户级线程中,线程切换可以在用户态下直接完成,无需操作系统干预

这种实现方式在用户看来有多个线程(同时并发执行多项操作),但是在操作系统内核看来,并不能意识到线程的存在(线程切换不由操作系统控制,这也说明操作系统不能将这种线程分配到多个CPU上并行执行,操作系统不直接管理这种线程)

即用户级线程对用户不透明,对操作系统透明(计算机领域内,透明指的是无法看到)

内核级线程

内核级线程的管理工作由操作系统内核完成。即线程调度,线程切换等工作由内核负责。因此内核级线程的切换必须在核心态下执行

注意

操作系统只能“看见”内核级线程,因此只有内核级线程才是处理机分配的单位

以下方的多对多模型为例,其由三个用户级线程映射到两个内核级线程上,在用户看来,进程中同时有三个线程并发执行,但在操作系统看来,只有两个内核级线程,所以哪怕是在4核处理机的计算机上运行,该进程也最多只能被分配到两个核心,最所只有两个用户进程并行执行

多线程模型

多对一模型
一对一模型
多对多模型
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线程
    • 概念
    • 引入线程机制后,发生的变化
    • 线程的属性
    • 线程的实现方式
      • 用户级线程
      • 内核级线程
      • 注意
      • 多线程模型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档