进程与线程

多线程

讲到多线程,就需要说一下多线程的作用是干什么的。

优点:解决了多部分同时运行的问题。

这个问题知乎大神解释的很清楚,我就不再多说。

多线程有什么用? - pansz的回答

进程和线程

进程:每个进程都有独立的代码和数据空间(数据上下文),进程之间切换会有较大的开销。

线程:进程中的一个负责执行的控制单元或者说是执行路径。同一进程下的线程共享代码和数据空间,每个线程有独立的运行栈程序计数器(PC) ,线程切换开销小。

当运行一个应用程序时,程序及所需数据被调入内查询,程序被CPU调度备执行,就启动了一个进程或多个线程。启动进程的时候,操作系统会为自己的进程分配内存和CPU等资源。

线程是程序中一个单一的顺序控制流程。每个进程至少有一个线程在执行自己的地址空间中的代码。线程是进程内部执行的路径。每个进程都可以包含多个线程,它们可以同时独立的执行进程的地址空间中的代码。进程的所有线程共享进程的地址空间。在基于线程的多任务处理环境中,线程是最小的执行单位。

通俗的来讲;你打开QQ,开了一个进程。打开网易云音乐,又开了一个进程。

在QQ这个进程中,你和你朋友语音聊天,传输语音开了一个线程,这时,隔壁老王有发给你一个消息,你打开弹出对话框又是一个线程。

即一个进程有多个线程。

下面再拿我自己电脑的资源监视图来说明这个问题。

资源管理器

表中每一行都是一个进程,每一个进程对应一个或多个线程数。

那到这里我们概括一下进程和线程的关系。

  • 一个进程中有多个或一个线程。

  • 进程负责分配空间,线程负责执行子任务。

  • 进程是资源分配的最小单位,线程是CPU调度的最小单位。

多进程是操作系统能同时运行多个任务(程序),多线程是指同一程序中有多个顺序流在执行。

真的是同时执行吗?

答案当然是No,它们受CPU控制,在某一时刻,只有一个程序在执行,确切来说,是一个执行路径在执行,cpu在这些执行路径之间切换处理,速度非常快,以至于我们认为她们是同时进行的。

线程生命周期

线程和进程都分为五个阶段:创建、就绪、运行、等待、休眠、堵塞、终止。

  • 创建: 线程被创建

  • 就绪: 线程做好了运行准备并在等待CPU

  • 运行: 线程在CPU上执行。

  • 等待: 线程在等待发生某个事件。例如用户输入输出。

  • 休眠: 线程已被告知要休眠一段时间

  • 堵塞: 线程在等待I/O结束

  • 终止: 线程被终止。

线程状态转换

5af2bc89cb7e0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Honyelchak

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值