2011年12月3日

就餐问题

摘要: 哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家就餐问题有时也用米饭和筷子而不是意大利面和餐叉来描述,因为很明显,吃米饭必须用两根筷子。哲学家就餐问题的演示哲学家从来不交谈,这就很危险,可能产生死锁,每个哲学家都拿着左手的餐叉,永远都在等右边的餐叉(或者相反)。即使没有死锁,也有可能发生资源耗尽。例如,假设规定当哲学家等待另 阅读全文

posted @ 2011-12-03 22:02 evilying 阅读(807) 评论(0) 推荐(0) 编辑

读写者

摘要: 首先是读写者问题,这个允许多个读者同时读,然而当读者读的时候,写着不允许写;但多个读者可以同时doReading();而当写者写的时候,读者不允许读;int readCount = 0 , writeCount = 0 ; Semaphore wsem = 1 ; Semaphore mutex = 1 ; void Reader() { while(true) { // lock the mutex to avoid the consurrent modification of readCount ; wait(mutex) ; ... 阅读全文

posted @ 2011-12-03 21:02 evilying 阅读(344) 评论(0) 推荐(0) 编辑

导航