当前访客身份:游客 [ 登录  | 注册加入尚学堂]
直播

我来了!

拥有积分:3972
尚学堂雄起!!威武。。。

博客分类

笔记中心

课题中心

提问中心

答题中心

解答题中心

通俗的说一说进程与线程那些事

我来了! 发表于 2年前 (2014-10-25 19:57:07)  |  评论(1)  |  阅读次数(431)| 2 人收藏此文章,   我要收藏   

  无论在写代码时,还是在使用电脑、手机等设备的时候,总是能看到或听到线程和进程的各种说法,看完各种各样的解释后,我也试着想通过一个通俗的例子来说一下,可是想了很久,也没有想到一个合适的方法,直到看到这篇文章,感觉举得例子还是挺好的,因此用自己的话简单的翻译一下,希望对大家有所帮助,原文地址:

http://www.qnx.com/developers/docs/6.4.1/neutrino/getting_started/s1_procs.html

==========================正文开始=============

进程和线程两个中文词本身读起来就挺绕口的,因此为了方便区分,我给他们两个分别取了一个洋气点儿的名字:进程的英文名为:Process,线程的英文名叫做Thread。

那么Process和Thread和我们的生活有什么联系呢?

  假设我们每个人都有一个房子(想想眼里就都是泪),这个房子有一个很洋气的名字,叫做”Process“,房子里面有楼梯、卧室、厨房、卫生间等等。我们要讲的进程Process和这个房子一样,自己无法主动去干点什么的。

  但是这个房子里面居住的我们亲戚朋友和兄弟姐妹,却可以利用这个房间干很多事情,他们就是一个一个的Thread。

  如果只有你一个人住在这个房子里面,那么你就可以为所欲为,把所有的空间占为己有:用卫生间、洗澡等等,这就是“单线程”,即Single Threaded.
  你终于不甘寂寞,并且用尽浑身解数,找到了一个girl或boy与你同住,后来为了分担房租,又找来某一个好朋友一起合租,屋子里面人多了,这就是多线程,Multi Threaded。

  你们好几个Thread在一起,共用这个房间的空间(一个Process的内存空间对于Thread是共享的),相安无事,和谐共处。

  可是问题来了,大家可以共享房间的空间,但是并不表示多个人可以同时占用一个空间,比如厕所,一次只能去一个人,所以为了防止多人同时进入的情况,因此每个人上厕所的时候,都会在门口挂一个锁,名字叫“Mutual exclusion”(互斥现象),防止多个Thread同时去使用一个内存空间,只有一个Thread用完后,其他Thread才可以用。

  有些地方大家都可以去,但是空间有限,只能去固定的人数,比如厨房,去的人多了,容不下,因此会在门口挂上几把钥匙,进去一个人取一个钥匙,出来的时候再把钥匙给放在原地,所以厨房人满的时候,后面要进的人,一看没有钥匙,就会在门口等待了,这种做法叫做:Semaphore(信号联络)。

    大概先写这么多吧,想看原汁原味和更多的讲解,可以看看那篇原文,写这么点希望对大家的理解有所帮助。

 

 


分享到:0
关注微信,跟着我们扩展技术视野。每天推送IT新技术文章,每周聚焦一门新技术。微信二维码如下:
微信公众账号:尚学堂(微信号:bjsxt-java)
声明:博客文章版权属于原创作者,受法律保护。如果侵犯了您的权利,请联系管理员,我们将及时删除!
(邮箱:webmaster#sxt.cn(#换为@))
北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2015 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183