龙空技术网

进程和线程之间有什么区别?往这看

青年学记 108

前言:

当前大家对“c语言进程和线程的区别”都比较重视,大家都想要学习一些“c语言进程和线程的区别”的相关内容。那么小编在网上搜集了一些对于“c语言进程和线程的区别””的相关资讯,希望朋友们能喜欢,大家一起来了解一下吧!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这就是进程与线程的区别。

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

青年学记 陪伴着各位青年

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

一起学习 一起进步

走向自立

标签: #c语言进程和线程的区别