有一家游乐园,它叫Program

本文是在看了阮一峰先生的《进程与线程的一个简单解释》之后按照个人理解写的一篇关于阐述程序、进程和线程关系的故事Demo,在内容上不是很严谨,请多包涵。

在某个不知名郊区,一个叫程序员的大富翁买下了一大片土地,建造了一座很大很大的游乐园,给它起了个名字:Program。

这里写图片描述

游乐园(Program)很大很大,有很多很多个游乐项目,每个游乐项目都有很多个工作人员在参与工作

这里写图片描述

程先生自己负责统计游乐园(Program)的营收。他在想,有一些游乐项目并不常年使用,比如清凉游泳池,是只在夏天开放的,比如某些节日专属的游乐项目,如果在计算成本的时候要总是把这些不运营的项目也统计起来就太麻烦了,于是聪明的程先生想到了一个万全的解决方案。他拍手道:“对啊!我可以把当天运营的项目和当天不运营的项目分开来啊!这样我只要统计当天运营的项目的成本就行啦!”他觉得自己这个想法巧妙极了,于是乎决定给当天投入运营的项目起一个轰轰烈烈的名字,他反复翻阅了维科英汉汉英词典,最后发现Process这个单词看起来了不起极了,从此游乐园(Program)里的运营项目就有了一个新名字:Process。

这里写图片描述

于是乎Process和Program的概念就清晰了,Program就是游乐园本身,它包含了游乐园所有的游乐项目,它是一个静态的概念。而Process是被投入运营的游乐项目,是动态的。游乐园里某一个游乐项目从早上8点开始投入运营,到晚上9点结束运营,为一个Process。9点过后游乐项目停止运营了便不能算一个Process了。也就是说Process是Program的一次执行,写进硬盘里的程序自然是静态的,通过启动程序调动里面的进程,此时的进程是动态的,可以被Start,也可以被Destroy。**

这里写图片描述

每个运营项目(Process)都是独立的,各自占有一片地方,每个运营项目(Process)也有好多好多工人(Thread),有负责维护运营这个游乐设施的,有负责每天接待客人的。可是为什么程先生要请那么多的工人呢?像维护游乐设施的,请一个维护全部的游乐设施不就行了吗?当然每个人都会这么想,程先生也不是傻子,他请这么多员工的原因是:X国是个极度贫困落后的国家,在这里劳动力是极为廉价的,并且十分人性化,只有当劳动的时候才会向老板要求一点面包和金钱。也就是说,线程是进程的子单位,也是程序执行流的基本单位。线程有轻量级的优点,每次start仅仅向系统请求支持运行的一点点必不可少的资源。**

这里写图片描述

在这种贫穷落后的国家里当然不可能建立起高科技的游乐设施啦。因此这里的游乐设施可是远近闻名的纯人工的哦。像摩天轮这种小型的游乐项目比较简单,只要一个工人(Thread)在下面不停地推动它转圈;像旋转魔盘也比较简单,只要一个壮一点的工人(Thread)在魔盘下拉着绳子转圈跑;像海盗船这样的大项目就麻烦了,需要两个工人(Thread)配合着从两边来回交替地拖拽海盗船。游乐园(Program)每天都沉浸在这样的汗水和欢声笑语中。

这里写图片描述

游乐园(Program)实在是太大了,为了方便管理,程先生开始把每个游乐项目当作一个独立的单位,在每个游乐项目里有这个项目的工人们用的厕所,休息用的房间等等。富翁规定,每个工人(Thread)只能在自己的工作区域内活动,并享有这片区域的资源。即同一个进程里的线程共享着这个进程的资源。线程之间通信是不需要通过调用内核的。**

这里写图片描述

刚开始工人们住得并不舒服,因为当工人A进去厕所大便的时候工人B也跑了进来,拉了一坨屎在工人A的裤子上;当休息室睡满了之后,工人B还大摇大摆地走进来,压在工人A的身上睡了过去。后来工人A被工人B压死了,程先生意识到问题的重要性,于是善良的程先生决定买一些锁来供工人们使用。由于线程共用同一片内存空间,就会出现多个线程读写同一片内存空间这种问题。为了解决这个问题提出了锁的概念。**

这里写图片描述

他给厕所加了一把锁,然后跟工人们说道:”这把锁是我花重金买来的,叫做Mutex(互斥锁),以后你们要养成上厕所关门的好习惯,其他人如果看到厕所被锁起来就说明里面有人,这时候千万不要强行拆门,乖乖在门口等。“

这里写图片描述

然后程先生指着挂在休息室门上的几把钥匙,说道:”这个可不一样,这个叫Semaphore(信号量),以后你们谁进去休息了,就取一把钥匙,当你看到门上的钥匙被取光了,说明里面已经没有位置啦。那你们就乖乖在门口等就好啦“

这里写图片描述

在程先生的整治下,游乐园(Program)越来越井然有序,也不再发生有人被大便活埋,或者睡觉的时候被莫名的压死的事故了。

这里写图片描述

每天游乐项目运营起来的时候就有工人(Thread)加入工作,这些工人们都被人们所熟知,但其实在游乐园(Program)中,有一类人是不被人们知道的,他们被称作Daemon。他们就像守护神一样守护着这个游乐项目里的所有人,为他们提供便利。比如说,偷偷摸摸地捡一下垃圾啊,偷偷摸摸地递一些资料啊什么的。这里阐述的是守护线程的概念。守护线程是特殊的线程,在后台为其他线程提供资源等,如Java的垃圾回收机制。**

这里写图片描述

就这样,程先生的游乐园(Program)每天都在欣欣向荣,在这片贫困落后的国度俨然是一处靓丽的风景线。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容