-1
'작은 책 세마포어'에서 '독점적 인 대기열'문제에 대한 해결책을 쓰려고합니다. 문제는 다음과 같이 표현됩니다 :볼룸 댄서는 세마포어를 사용합니다.
스레드는 볼룸 댄서를 대표하고 댄서, 지도자 및 추종자의 두 종류가 댄스 플로어에 입장하기 전에 두 대기열에서 기다리는 것을 상상해보십시오. 리더가 도착하면 기다리는 추종자가 있는지 확인합니다. 그렇다면, 그들은 모두 진행할 수 있습니다. 그렇지 않으면 기다립니다.
마찬가지로 팔로워가 도착하면 리더를 확인하고 이에 따라 진행하거나 기다립니다. 여기 추종자
mutex.wait()
if leaders> 0:
leaders--
leadersQueue.signal()
else:
followers++
mutex.signal()
followersQueue.wait()
dance()
rendezvous.wait()
나는 계속 어떻게
코드입니다 leardermutex.wait()
if followers > 0:
followers--
followerQueue.signal()
else:
leaders++
mutex.signal()
leaderQueue.wait()
dance()
rendezvous.wait()
mutex.signal()
의 코드이며, 여기
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");
}
}
과 :
나는 다음 볼룸 클래스를 넣어? ?
감사가 you..but이 이발사 문제를 수면에 similar..because되지 않습니다 내 문제에는 많은 지도자들이 있습니다. –
문제는 없지만 실제로 제공된 링크에는 "다중 이발사"솔루션이 있습니다. –