当前位置: 首页 > backend >正文

操作系统线程入门

谈到并发编程,c++鼓励多使用多进程编程,而java更鼓励多线程编程

引入多个进程 是为了 实现并发编程 => 因为目前是多核cpu时代

多进程,实现并发编程,效果也是非常理想

但是,多进程编程模型,也有明显缺点。进程太重量,效率不高

创建一个进程,销毁一个进程,调度一个进程, 消耗时间都比较多,消耗在资源申请上。

为了解决上诉问题,就引入了“线程”(Thread)

线程也叫做"轻量级进程",创建,销毁,调度都比线程更快。

线程不能独立存在,而是要依附于进程(进程包含线程),进程可以包含一个线程,也可以包含多个线程

一个进程最开始的时候,至少要有一个线程

这个线程负责完成执行代码的工作(每个线程可以独立执行一些代码)

也可以根据需要创建更多线程,从而实现 “并发编程 ” 的效果

每个线程都有 状态,优先级,上下文,记账信息

线程的特点:

  1. 每个线程都可以独立的去CPU上调度执行

  2. 同一个进程的多个线程之间,共用同一份内存空间,和文件资源 (因此创建的时候无需申请资源,直接复用之前分配给进程的资源,省区了资源分配开销,使得效率更高)

一个进程由多个PCB共同表示 => 每个PCB就用来表示一个线程 => 每个线程有自己的状态,优先级,上下文,记账信息 => 每个线程都可以独立去CPU上调度执行 => 这样的线程共用了同样的内存指针,文件描述符表 => 创建线程(PCB)不需重新申请资源 => 创建,销毁效率更高了。

由此可得结论,线程是调度的基本单位,线程是资源分配的基本单位

线程安全

适当增加线程可以增加执行效率

当线程数目多了,可能会产生一定冲突,称为 "线程不安全"

如果某个线程出现异常,没有妥善处理 (catch),容易把整个进程崩溃,其他线程也随之消亡

线程和进程的区别

1.进程包含线程,一个进程里面可以有一个线程,也可以有多个线程

2.进程和线程都是用来实现 并发编程 场景的,但是线程比进程更轻量,更高效

3.同一个进程的线程之间,共用同一份资源(内存+硬盘),省去了申请资源的开销

4.进程和进程之间,是具有独立性的,一个进程挂了,不会影响别人。线程和线程之间(同一个进程内),是可能会相互影响的 (线程安全问题 + 线程出现异常)

5.进程是资源分配 的基本单位,线程是资源调度的基本单位

http://www.xdnf.cn/news/1016.html

相关文章:

  • 前端中的浮动、定位与布局
  • 使用纯前端技术html+css+js实现一个蔬果商城的前端模板!
  • Github中项目的公开漏洞合集
  • Spring MVC 执行流程全解析:从请求到响应的七步走
  • 买卖股票的最佳时机(每日一题-简单)
  • SpringBoot中,声明式事务的使用
  • 文字、语音、图片、视频四个模态两两之间(共16种转换方向)的生成技术及理论基础的详细说明及表格总结
  • 【漫话机器学习系列】216.应对高方差(过拟合)的策略详解(Strategies When You Have High Variance)
  • 线上地图导航小程序源码介绍
  • uCOS3实时操作系统(任务切换和任务API函数)
  • MD5和sha1绕过方式总结
  • 第六章.java集合与泛型
  • 街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)17
  • 冒泡排序详解
  • 使用若依二次开发商城系统-1
  • vue项目通过GetCapabilities获取wmts服务元数据信息并在openlayers进行叠加显示
  • 配置管理CM
  • 衡石chatbi如何通过 iframe 集成
  • 制作一款打飞机游戏14:资源优化
  • Nginx下搭建rtmp流媒体服务 并使用HLS或者OBS测试
  • 性能比拼: Nginx vs Caddy
  • NHANES指标推荐:PhenoAge
  • Ldap高效数据同步- Delta-Syncrepl复制模式配置实战手册(上)
  • 极验4滑块笔记:整理思路--填坑各种问题
  • 傲来云分享,负载均衡:提升网站性能与稳定性
  • 无人机飞控运行在stm32上的RTOS实时操作系统上,而不是linux这种非实时操作系统的必要性
  • 【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识
  • 报错 | 配置 postcss 出现 报错:A `require()` style import is forbidden.
  • C++中的算术转换、其他隐式类型转换和显示转换详解
  • 开发指南:构建结合数字孪生、大语言模型与知识图谱的智能设备日志分析及生产异常预警系统