关于哲学家就餐问题中wait()的运用,以下这些代码是对的还是错的?是否解决了死锁问题class Fork {private boolean taken=false;synchronized void put() {taken=false;notify();}synchronized void get()throws InterruptedException

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 18:18:10
关于哲学家就餐问题中wait()的运用,以下这些代码是对的还是错的?是否解决了死锁问题class Fork {private boolean taken=false;synchronized void put() {taken=false;notify();}synchronized void get()throws InterruptedException

关于哲学家就餐问题中wait()的运用,以下这些代码是对的还是错的?是否解决了死锁问题class Fork {private boolean taken=false;synchronized void put() {taken=false;notify();}synchronized void get()throws InterruptedException
关于哲学家就餐问题中wait()的运用,以下这些代码是对的还是错的?是否解决了死锁问题
class Fork {
private boolean taken=false;
synchronized void put() {
taken=false;
notify();
}
synchronized void get()
throws InterruptedException {
while (taken) wait();
taken=true;
}
}
class Philosopher extends Thread {
private Fork left; private Fork right;
Philosopher(...Fork l,Fork r) {
...left = l; right = r; ...
}
public void run() {
try {
while (true) {
// thinking...
// hungry:
right.get(); left.get();
// eating...
// finished eating:
right.put(); left.put();
} } catch (InterruptedException e) {} }}
这里面一个线程会调用get()方法两次,分别去拿右边和左边的叉子,但是我总觉得这个代码有问题,当第一个线程第一次调用get()方法时会把taken值变成True,导致了这个线程在第二次调用get()方法去拿左边的叉子时进入wait状态从而没法拿左边的叉子.

关于哲学家就餐问题中wait()的运用,以下这些代码是对的还是错的?是否解决了死锁问题class Fork {private boolean taken=false;synchronized void put() {taken=false;notify();}synchronized void get()throws InterruptedException
这里fork里的taken变量不是static的,所以各实例的该变量是互相独立的
因此,第一次get()之后只是right这个fork的taken被修改成true了,left仍然是false

关于哲学家就餐问题中wait()的运用,以下这些代码是对的还是错的?是否解决了死锁问题class Fork {private boolean taken=false;synchronized void put() {taken=false;notify();}synchronized void get()throws InterruptedException “哲学家就餐问题”的思路是什么? 哲学家就餐问题!求一份哲学家就餐问题的c++代码,不要伪代码! 哲学家就餐问题?操作系统设计.会吗. 谁有关于食堂就餐问题的数学模型论文 六个哲学家就餐问题,用C/C++语言 线程同步实现跟五个哲学家的就餐问题要求差不多,就是人数换成了六个.要求用线程同步实现,可以用临界区、互斥量和事件,但不能用信号量.ps:身边有人说 关于哲学家的故事 关于哲学家进餐问题.我们知道操作系统中可能出现死锁的问题——哲学家进餐问题,这个问题中涉及到“筷子”.但是要知道,计算机学科里面领先的是西方国家,这个问题应该不是亚洲国家的 关于《哲学家的动物园》中狼的故事RT...急... 哲学家吃饭问题*设有5个哲学家,共享一张放有5把椅子的桌子,每人分得一把椅子,*但是,桌子上共有5只筷子,在每人两边各放一只,哲学家们在肚子饥饿*时才试图分两次从两边拿起筷子就餐.*条 哲学家如何看问题的 关于哲学家胡塞尔的个人简介 简述古希腊哲学家关于世界本源的探讨:哲学家学说 举出三个米利都学派的哲学家关于形而上学问题的讨论? 写一篇关于“在暑期生活中,运用数学知识解决现实生活问题”的心得体会. 有哪些人是西方近现代史的哲学家?求一篇关于西方近现代史的哲学家思想或哲学问题的文章.800左右 哲学家是如何看待问题的? 用马克思所说的:“哲学家们只是用不同的方式解释世界,问题在于改变世界”说明《序言》中关于决定社会意识的思想和《德意志意识形态》中关于统治阶级的思想不过是占统治地位的物质