进程、线程、多线程

一、概念
  • 进程:进程是程序的一次执行过程,是一个动态概念。进程是操作系统资源分配的基本单位,每一个进程都有一个自己的地址空间。
  • 线程:线程是处理器调度和执行的基本单位,多个线程在同一进程中共享进程所拥有的全部资源。
二、联系

线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

三、区别
  • 开销方面:每个进程都有独立的代码和数据空间,进程之间切换的开销大;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。

  • 所处环境:在操作系统中能同时运行多个进程;而在同一个进程中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)。

  • 内存分配方面:系统为每个进程分配不同的内存空间;系统不会为线程分配内存,线程所使用的资源来自其所属进程的资源,线程组之间只能共享资源。

四、多线程

多线程:程序中可以同时运行多个不同的线程来执行不同的任务。

  • 优点
    可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。
  • 缺点
    1)线程也是程序,所以线程需要占用内存,线程越多占用内存也越多;
    2)多线程需要协调和管理,所以需要CPU时间跟踪线程;
    3)线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;
    4)线程太多会导致控制太复杂,最终可能造成很多Bug;
  • 多线程与单线程的区别
    1) 单线程程序:只有一个线程,代码顺序执行,容易出现代码阻塞(页面假死)
    2) 多线程程序:有多个线程,线程间独立运行,能有效地避免代码阻塞,并且提高程序的运行性能
五、多线程的工作原理
  • 对于单处理器系统,操作系统会轮流调度每个线程执行一小段时间,然后切换另一个线程,在切换的时候,保存当前线程使用的寄存器上下文和堆栈,并且在下次调度的时候恢复。这样线程中的程序感觉不到自己被中断过。
  • 对于多处理器系统,操作系统会将不同的线程调度给多个处理器,让它们并行执行。
六、多线程使用场景
  • 一个是并发操作,避免阻塞和更有效利用资源。典型的例子有:在长时间工作的程序中使用工作线程避免界面失去响应。在网络下载程序中,使用多个线程提高对网络的使用效率,更快下载文件。
  • 一个是并行,线程是处理器调度的最小单位。如果你的计算机配置了多个处理器或者内核,那么可以同时利用多个处理器同时计算,加快问题解决的速度。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值