【发布时间】:2014-05-21 12:59:45
【问题描述】:
我正在尝试为“信号量小书”中的“独占队列”问题编写解决方案。问题表述如下:
想象线程代表舞厅舞者,两种舞者,领导者和追随者,在进入舞池之前排成两个队列。当领导者到达时,它会检查是否有跟随者在等待。如果是这样,他们都可以继续进行。否则它会等待。
类似地,当跟随者到达时,它会检查领导者并相应地继续或等待。
我放了如下舞厅课:
public class Ballroom {
public void leaderEntered(){
//the calling leader thread will either block, waiting for
//follower or will proceed to dance
dance();
}
public void followerEntered(){
//the calling followerthread will either block, waiting for
//leader or will proceed to dance
dance();
}
private void dance(){
System.out.println("doing dance");
}
}
这里是leader的代码
mutex.wait()
if followers > 0:
followers--
followerQueue.signal()
else:
leaders++
mutex.signal()
leaderQueue.wait()
dance()
rendezvous.wait()
mutex.signal()
这是追随者的代码
mutex.wait()
if leaders> 0:
leaders--
leadersQueue.signal()
else:
followers++
mutex.signal()
followersQueue.wait()
dance()
rendezvous.wait()
我该如何继续??
【问题讨论】: