005 多线程

文章目录

线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

并发和并行

  • 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
  • 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
  • 在一台处理器上"同时"处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

多线程好处

提高cpu的利用率

单线程:

5 seconds reading file A

2 seconds processing file A

5 seconds reading file B

2 seconds processing file B

14 seconds total

多线程:

5 seconds reading file A

5 seconds reading file B + 2 seconds processing file A

2 seconds processing file B

12 seconds total

一般来说,在等待磁盘IO,网络IO或者等待用户输入时,CPU可以同时去处理其他任务。

更高效的响应

多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态,不会

造成无法响应的现象。

公平使用CPU资源

当前没有进行处理的任务,可以将处理器时间让给其它任务;占用大量处理时间的任务,也可以定期将处理器时间让给其它任务;通过对CPU时间的划分,使得CPU时间片可以在多个线程之间切换,避免需要长时间处理的线程独占CPU,导致其它线程长时间等待。

多线程的代价

更复杂的设计

共享数据的读取,数据的安全性,线程之间的交互,线程的同步等;

上下文环境切换

线程切换,cpu需要保存本地数据、程序指针等内容;

更多的资源消耗

每个线程都需要内存维护自己的本地栈信息,操作系统也需要资源对线程进行管理维护;

相关推荐
并不会3 天前
多线程案例-单例模式
java·学习·单例模式·单线程·多线程·重要知识
plmm烟酒僧4 天前
基于 RK3588 的 YOLO 多线程推理多级硬件加速引擎框架设计(代码框架和实现细节)
yolo·rk3588·多线程·rkmpp·硬件加速·视频解码·librga
FreakStudio5 天前
一文速通 Python 并行计算:05 Python 多线程编程-线程的定时运行
单片机·嵌入式·多线程·面向对象·并行计算·电子diy
请叫我鹏鹏君8 天前
ThreadLocal详解与高频场景实战指南
java·多线程
FreakStudio9 天前
一文速通Python并行计算:03 Python多线程编程-多线程同步(上)—基于互斥锁、递归锁和信号量
python·嵌入式·多线程·面向对象·并行计算·线程同步·电子diy
努力的CV战士11 天前
面试题分享-多线程顺序打印奇偶数
c语言·算法·多线程·信号量
FreakStudio11 天前
一文速通Python并行计算:02 Python多线程编程-threading模块、线程的创建和查询与守护线程
python·嵌入式·多线程·并行计算·电子diy
长安er12 天前
异步编程与流水线架构:从理论到高并发
数学建模·架构·gui·多线程·异步·流水线·全息
FreakStudio12 天前
一文速通Python并行计算:01 Python多线程编程-基本概念、切换流程、GIL锁机制和生产者与消费者模型
python·嵌入式·多线程·面向对象·并行计算·电子diy
hhw19911219 天前
c#知识点补充
多线程