首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进程与线程间有何区别?往这看

如果要炒一盘土豆丝,应该有哪几个步骤呢?

洗土豆,切土豆丝,准备调料,炒菜,出锅。

步骤大抵如此。不过,在炒菜的时候,是先放土豆丝?还是先放调料?

在这个小小的选择中,选择了不同的执行方式,最后带来的效果也是不同的。

像炒土豆丝一样,在实际的开发当中,会存在很多程序进程要共同执行的情况,在这些情况下,多个进程如何运行,是先后运行,还是同时运行?

由于不同的选择方式会带来不同的效果。因此,在选择运行方式时,就必须仔细考虑、斟酌。

选择不同的运行方式,首先就要了解其选择后产生的效果。

为此,就先要了解一下进程和线程的关系。

进程是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据

按照比较形象的语言,我们可以将计算机中的各种各样的进程看成一列一列的火车。操作系统就像车辆调度站,控制所有火车的行车路线,为各列火车分配各种资源,包括停车站台,行车轨道,还有运行的时间

线程在进程下行进,车厢只有在火车头存在的情况下才能运行,单纯的车厢无法运行,就像线程无法单独运行。

一个进程可以包括多个线程。一列火车可以拖拽多个车厢。

不同进程之间的数据难以共享,正如不同列车所承载的乘客难以互相换乘

相对的,同一进程下的不同线程之间的数据较易共享,就像在同一列车下的乘客可以在不同车厢中走动

因为线程是包括于进程之中,所以调用进程消耗的计算机资源要比调用线程所消耗的资源多得多

进程之间不会互相影响,但进程中的任意的线程如果崩溃,会导致包含它的进程也崩溃

在操作系统中,CPU负责大多数的程序运算。像显卡那样运算图形数据进程的情况,我们暂且不议。

我们假设所有的进程都由一颗单核CPU来运行。由于这个CPU只有一个核心,且现代的CPU运算速度已经太快了(相对于单个进程来说)。

在这种情况下,多个进程的运行完全由CPU来决定谁先来。也就是说,各个进程谁先运行,全凭CPU看哪个进程顺眼

在执行进程时,一般的步骤是:

1.加载一个进程的上下文

2.CPU执行进程中所包含的步骤a b c(即线程)

3.执行完成后将执行后的结果保存上下文

进程使用CPU内的共享内存时,就会存在一个锁,使得其他线程无法使用,只有等当前进程结束运行之后,其它进程才能运行,而这个锁,也叫“互斥锁”。

进程使用CPU内的内存地址时,可以限定使用量,这种限定使用量可以限定使用的数量。就好似火车上的餐车,有固定的座位,满了就得在门口等着,等空闲下来才能进去。这个限定使用量就称为 - “信号量”。

这就是进程与线程的区别

如果对文章中的内容有什么困惑的地方,可以在评论区提出自己的问题,学记同大家一起交流,解决各种问题,一起进步。

青年学记 陪伴着各位青年

作者:青年学记 一名不断进步的程序

一起学习 一起进步

走向自立

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191112A0N6QP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券