最近这段时间小编有点自卑,但是还是要按时的冒一下泡!!!!!!
在学习过程中经常听到进程与线程的概念,这几天了解了下线程与进程之间的关系,把自己的想法分享一下:
感谢:http://www.tuicool.com/articles/vMfIjy
进程(process)和线程(thread)是操作系统的基本概念。
最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。
假设我们每个人都有一个房子( 想想眼里就都是泪 ),这个房子有一个很洋气的名字,叫做”Process“,房子里面有楼梯、卧室、厨房、卫生间等等。我们要讲的进程Process和这个房子一样,自己无法主动去干点什么的。
但是这个房子里面居住的我们亲戚朋友和兄弟姐妹,却可以利用这个房间干很多事情,他们就是一个一个的Thread。
如果只有你一个人住在这个房子里面,那么你就可以为所欲为,把所有的空间占为己有:用卫生间、洗澡等等,这就是“单线程”,即Single Threaded. 你终于不甘寂寞,并且用尽浑身解数,找到了一个girl或boy与你同住,后来为了分担房租,又找来某一个好朋友一起合租,屋子里面人多了,这就是多线程,Multi Threaded。
你们好几个Thread在一起,共用这个房间的空间( 一个Process的内存空间对于Thread是共享的 ),相安无事,和谐共处。
可是问题来了,大家可以共享房间的空间,但是并不表示多个人可以同时占用一个空间,比如厕所,一次只能去一个人,所以为了防止多人同时进入的情 况,因此每个人上厕所的时候,都会在门口挂一个锁,名字叫“Mutual exclusion”(互斥现象),防止多个Thread同时去使用一个内存空间,只有一个Thread用完后,其他Thread才可以用。
有些地方大家都可以去,但是空间有限,只能去固定的人数,比如厨房,去的人多了,容不下,因此会在门口挂上几把钥匙,进去一个人取一个钥匙,出来 的时候再把钥匙给放在原地,所以厨房人满的时候,后面要进的人,一看没有钥匙,就会在门口等待了,这种做法叫做:Semaphore(信号联络)。