메시징(생산자-소비자)에서 수신 프로세스 또는 사서함이 메시지를 받을 때까지 전송 프로세스가 차단되면 보내기 차단이 발생합니다.
수신 차단은 메시지를 사용할 수 있을 때까지 수신자가 차단한다는 의미입니다.
생산자-소비자 문제에 대한 해결책은 send() 및 receive() 문을 차단하는 경우 간단해집니다.
왜 사소한 일이 되었습니까?
답변1
당신이 인용하고 있는 것으로 보이는 책("운영 체제 개념" - Silberschatz, Galvin, Gagne)에는 주제에 대해 다음과 같은 내용이 나와 있습니다.
send()와 receive()의 다양한 조합이 가능합니다. send()와 receive()가 모두 차단되면 송신자와 수신자 사이에 랑데뷰 지점이 있습니다. 생산자-소비자 문제에 대한 해결책은 send() 및 receive() 문을 차단하는 경우 간단해집니다.생산자는 단순히 차단 send() 호출을 호출하고 메시지가 수신자나 사서함에 전달될 때까지 기다립니다.마찬가지로 소비자가 receive()를 호출하면 메시지를 사용할 수 있을 때까지 차단됩니다.
이것은 나에게 분명해 보인다.
답변2
귀하의 질문에 대한 대답은 다음과 같습니다. 소비자-생산자 문제에 대한 읽기-쓰기 비차단 솔루션을 구현해 보십시오.
이렇게 한다면, 즉 논블로킹 읽기/쓰기 작업의 문제를 어떻게 해결할 것인지 고민하다 보면 버퍼 관리가 필요하다는 사실을 금세 깨닫게 될 것이다. 그런 다음 동시성 상황에서는 판독기/작성기 공정성과 같은 문제를 처리해야 한다는 것을 알게 됩니다. 문제는 빠르게 다면적으로 변하며 일부 하위 문제(공정성)에는 명확한 해결책이 없습니다.