Chinaunix首页 | 论坛 | 博客
  • 博客访问: 290230
  • 博文数量: 95
  • 博客积分: 618
  • 博客等级: 中士
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-28 13:39
文章分类

全部博文(95)

文章存档

2015年(65)

2013年(1)

2012年(10)

2011年(19)

分类: LINUX

2015-06-24 23:51:05

 


下面我以一个日常生活中简单的例子来说明进程和线程之间的区别和联系:



这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个进程的话,那么图中由白色虚线分隔开来的各个车道就是进程中的各个线程了。
这些线程(车道)共享了进程(道路)的公共资源(土地资源)
这些线程(车道)必须依赖于进程(道路),也就是说,线程不能脱离于进程而存在(就像离开了道路,车道也就没有意义了)
这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或转弯,必须等待其它车道的车辆通行完毕)
这些线程(车道)之间依靠代码逻辑(交通灯)来控制运行,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。
这些线程(车道)之间谁先运行是未知的,只有在线程刚好被分配到CPU时间片(交通灯变化)的那一刻才能知道

阅读(1538) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~