나는 다양한 유형의 생산자/소비자 객체가 많은 제작자를 보유하고 있습니다. ProducerOfX, ProducerOfY, ConsumerOfX, ConsumerOfY. 생산자는 객체 (X 또는 Y)를 대기열에 넣고 관련 소비자에게 알립니다 (ProducerOfX는 ConsumerOfX에만 알립니다).생산자 소비자 - 잠글 내용
이 작업을하려면 자물쇠로 사용할 객체가 필요합니다. 내 질문은, 개체를 만들지, 예를 들어. new X()를 호출하고 ProducerOfX와 ConsumerOfX를 모두 사용하여 wait/notify를 호출합니다.
대기열이 하나만 있고 일반 개체 MyQueue를 유지하기 위해이 큐를 작성했습니다. 따라서 많은 제작자와 소비자가이 대기열을 공유합니다. X와 Y를 하나의 큐에 넣는다. X가 켜져 있으면 ConsumerOfX가 깨어나서 X가 제거됩니다. Y와 동일합니다.
대기열에서 소비자에게 '지금 X 객체가 있습니다.'또는 생산자에게 '안녕하세요, X의 소비자, 방금 X를 대기열에 넣었습니다'라고 말하십시오. 대기열의 생산자가 대기열의 소비자에 대해 알지 않아야한다고 생각합니다.
더 깨끗한 방법이 있습니까?
일반적으로 사물의 알림 측면뿐만 아니라 잠금 (안전한 게시)을 처리하는 동시 대기열 구현을 사용합니다. – BeeOnRope
내가 수행하려고하는 작업은 멀티 스레딩을 가르쳐 주므로 동시 패키지에서 아무 것도 사용하지 않을 것입니다. – TheCoder
질문이 확실하지 않습니다. 다른 오브젝트 유형과 다른 사용자가있는 경우 두 개의 대기열을 사용하십시오. 아마도 질문을 적어도 두 가지로 나누어야합니다. 하나는 동시 대기열을 만드는 방법에 초점을 맞춘 것이고, 다른 하나는 생산/소비자 유형이 다른 하나의 대기열과 상호 작용한다는 아이디어에 관한 것입니다. 그들은 나에게 직각으로 보입니다. – BeeOnRope