如果要炒一盘土豆丝,应该有哪几个步骤呢?
洗土豆,切土豆丝,准备调料,炒菜,出锅。
步骤大抵如此。不过,在炒菜的时候,是先放土豆丝?还是先放调料?
在这个小小的选择中,选择了不同的执行方式,最后带来的效果也是不同的。
像炒土豆丝一样,在实际的开发当中,会存在很多程序进程要共同执行的情况,在这些情况下,多个进程如何运行,是先后运行,还是同时运行?
由于不同的选择方式会带来不同的效果。因此,在选择运行方式时,就必须仔细考虑、斟酌。
选择不同的运行方式,首先就要了解其选择后产生的效果。
为此,就先要了解一下进程和线程的关系。
进程是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据。
按照比较形象的语言,我们可以将计算机中的各种各样的进程看成一列一列的火车。操作系统就像车辆调度站,控制所有火车的行车路线,为各列火车分配各种资源,包括停车站台,行车轨道,还有运行的时间。
线程在进程下行进,车厢只有在火车头存在的情况下才能运行,单纯的车厢无法运行,就像线程无法单独运行。
一个进程可以包括多个线程。一列火车可以拖拽多个车厢。
不同进程之间的数据难以共享,正如不同列车所承载的乘客难以互相换乘。
相对的,同一进程下的不同线程之间的数据较易共享,就像在同一列车下的乘客可以在不同车厢中走动。
因为线程是包括于进程之中,所以调用进程消耗的计算机资源要比调用线程所消耗的资源多得多。
进程之间不会互相影响,但进程中的任意的线程如果崩溃,会导致包含它的进程也崩溃。
在操作系统中,CPU负责大多数的程序运算。像显卡那样运算图形数据进程的情况,我们暂且不议。
我们假设所有的进程都由一颗单核CPU来运行。由于这个CPU只有一个核心,且现代的CPU运算速度已经太快了(相对于单个进程来说)。
在这种情况下,多个进程的运行完全由CPU来决定谁先来。也就是说,各个进程谁先运行,全凭CPU看哪个进程顺眼。
在执行进程时,一般的步骤是:
1.加载一个进程的上下文
2.CPU执行进程中所包含的步骤a b c(即线程)
3.执行完成后将执行后的结果保存上下文
进程使用CPU内的共享内存时,就会存在一个锁,使得其他线程无法使用,只有等当前进程结束运行之后,其它进程才能运行,而这个锁,也叫互斥锁。
进程使用CPU内的内存地址时,可以限定使用量,这种限定使用量可以限定使用的数量。就好似火车上的餐车,有固定的座位,满了就得在门口等着,等空闲下来才能进去。这个限定使用量就称为 –信号量。
这就是进程与线程的区别。
如果对文章中的内容有什么困惑的地方,可以在评论区提出自己的问题,学记同大家一起交流,解决各种问题,一起进步。
青年学记 陪伴着各位青年
作者:青年学记 一名不断进步的程序猿
一起学习 一起进步
走向自立
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容