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

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

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(信号联络)。

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

  

你可能感兴趣的:(线程)