Skip to content

39. IPC — Message Queues

Processes exchange discrete messages through a kernel-managed queue — unlike a pipe's raw byte stream, message boundaries are preserved (send("Hello") then send("World") is read back as two distinct messages, not one merged blob).

Key features: message boundaries, priority (higher-priority messages can jump the queue), persistence (messages wait even if the consumer isn't currently running), and blocking/non-blocking/timeout receive modes.

POSIX System V
APImq_open/send/receivemsgget/msgsnd/msgrcv
IdentificationName (/myqueue)Integer key
PriorityBuilt-inManual
PreferredModernLegacy
Message Queue Pipe Shared Memory Socket
Message boundariesYesNoManualNo (TCP)
PersistenceYesNoYesNo
Cross machineNoNoNoYes
SpeedMediumFastFastestSlowest

Real-world use: Windows GUI event queues (keyboard/mouse/paint events); microservice message brokers like RabbitMQ/Kafka, where one message can fan out to multiple consumers and the queue absorbs load spikes.