Suppose a background service sends image-processing jobs to worker processes. Each job has a clear boundary, such as a job ID, operation, and priority.
A message queue preserves that boundary. The producer sends one message, the kernel stores it as one message, and a worker receives it as one message. The queue can also buffer jobs while all workers are busy.
Signals solve a simpler problem. They notify a process that an event occurred, such as a shutdown request or a child process changing state. They are not designed to carry application data or preserve a sequence of messages.
Both are asynchronous IPC mechanisms, but they serve different purposes:
A message queue transfers discrete data. A signal primarily notifies a process that something happened.
This chapter explains POSIX and System V message queues, priorities, lifetime, contention, and backpressure, then compares their data-transfer contract with standard and real-time signal notifications.