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

进程线程、同步异步、并发并行

多个任务(一个任务包含多条指令)需要被处理,如何能提高执行效率?

进程线程

Process进程

一个正在运行的应用程序在操作系统中被视为一个进程

进程之间是相对独立的,一个进程无法访问另一个进程的数据,一个进程运行的失败也不会影响其他进程的运行

Thread线程

是操作系统分配CPU时间的基本单位

进程可以包括一个或多个线程,在进程入口执行的第一个线程被视为这个进程的主线程

线程主要是由CPU寄存器(记录当前所执行线程的状态)、调用栈(维护线程所调用到的内存与数据)和线程本地存储器TLS(存放线程的状态信息)组成的

同步异步

Sync同步

一个任务完成后另一个任务才能开始,串行就是同步

Async异步

一个任务的开始和完成不会直接影响另一个任务的开始和完成

并发并行

并发

有多个任务,且这几个任务都是在同一个处理机(单核处理器)上运行,任一一个时刻点只能处理一个任务,因此需要不断交替任务运行

并行

有多个任务,且这几个任务在一个以上处理机(多核处理器)上运行,任一一个时刻点每个核独立同时执行各自任务,不需要切换任务

形象理解同步异步,并发并行

有两辆汽车在B,你需要将它们开到A

Sync:需要先把第一辆车送到A,再送第二辆

Async:你将一辆车送到A,委托另一个人将另一辆送到A

并发:你首先将一辆车开100米,返回去将另一辆也开100米,然后循环上述过程

并行:用一个大型货车,同时拉两辆车送到A

多线程和性能

多线程是在进程中实现并发执行的方式/手段,

但是多线程是否真正提高了效率呢?

既然它是并发的,也就是任务是交替进行的,虽然看起来是同时进行(指定切换速度快),但是总时间不变

但是多线程其实是提高效率的:

是因为所有的任务并不都在cpu(负责计算)处理,比如io操作在磁盘处理,

当进行io操作,大部分时间cpu都是空闲的 ,这时可以处理其他简单的计算指令,其实就相当于在硬件的并行,提高CPU的利用率

但是要注意多线程不一定会提高性能,因为线程的切换和调度也需要时间


http://www.mrgr.cn/news/61909.html

相关文章:

  • .NET Core WebApi第4讲:控制器、路由
  • LiveQing视频点播流媒体RTMP推流服务常见问题-如何查看无人推流RTMP推流OBS推流的远端IP?
  • aws boto3 下载文件
  • LeetCode 3211.生成不含相邻零的二进制字符串:二进制枚举+位运算优化
  • 论可以对抗ai编程的软件开发平台(直接把软件需求描述变成软件的抗ai开发平台)的设计
  • 10个你应该立即卸载的VS Code扩展
  • 小游戏发展迅速,游戏平台如何从技术方向加速业务转化?
  • 如何进行Java的时间序列分析与算法优化,应该从何入手?
  • 大模型:索引构建、预检索与检索阶段、检索后与生成阶段
  • 自动批量生成图片代码
  • Apache Hive 通过Docker快速入门
  • 深入解析Sysmon日志:增强网络安全与威胁应对的关键一环
  • Leetcode—3216. 交换后字典序最小的字符串【简单】
  • 先验概率、似然概率、后验概率
  • Qt5 读写共享内存,已验证,支持汉字的正确写入和读取
  • Java 中 InputStream 的使用:try-with-resources 与传统方式的比较
  • 解密自闭症全托寄宿肇庆:专业照顾与培养一站式服务
  • node学习记录-os
  • 比较24个结构的迭代次数
  • 量化与知识蒸馏的区别
  • 加密软件有什么功能?
  • flume系列之:flume机器做条带划分提高磁盘性能和吞吐量的详细步骤
  • Xss_less靶场攻略(1-18)
  • 电容的基本知识
  • 大语言模型(LLM)入门级选手初学教程 II
  • 开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的