摘要: 在上一篇《网络编程——多线程技术》中已经说过,在一如多线程技术之后,在一个进程中可以创建多个线程,这多个线程在需要访问同一个资源时,肯定会发生争用现象,在争夺资源的过程中,假如第一个线程先访问这一资源,并对其做了修改,在这个线程没有执行完毕但时间片到了,第二个线程又访问该资源,就可能得到错误的结果。这是非常严重的问题。为了解决这一问题,引入了进程同步的概念。实现线程同步,可以有多种方法。在《网络编程——多线程技术》的火车票售票程序我们使用了创建互斥对象来实现线程同步。这里再介绍另外两种实现线程同步的方法:分别是事件对象和关键代码段(也成为临界区)。下面详细介绍这两种线程同步的方法: 假如线程1拥有资源A的访问权等待资源B才能运行,而线程2拥有资源B而要获得资源A才能运行。但是二者都不愿意先释放自己拥有的资源,这样就一直僵持下去,这样就造成了线程死锁。线程死锁的经典问题就是“哲学家进餐问题”。 阅读全文
posted @ 2011-10-15 12:00 乘风736 阅读(3683) 评论(1) 推荐(3) 编辑