O livro ("Operating System Concepts" - Silberschatz, Galvin, Gagne) que você parece estar citando tem a dizer sobre o assunto:
Different combinations of send() and receive() are possible. When both send() and receive() are blocking, we have a rendezvous between the sender and the receiver. The solution to the producer-consumer problem becomes trivial when we use blocking send() and receive() statements. The producer merely invokes the blocking send() call and waits until the message is delivered to either the receiver or the mailbox. Likewise, when the consumer invokes receive(), it blocks until a message is available.
Parece bem claro para mim.