Software Design/Share state by communicating

Why
Passing state requests through a queue is a way to make the communication between the sender and the receiver independent on the precise timing of the requests, which reduces the complexity of this communication and rules out timing-related concurrency bugs, thus making the code more robust.

Passing changing state through a queue (instead of accessing it at the mutation place) reduces the load on the cache coherence system due to reduced true sharing of the memory lines if there are usually some elements in the queue.

Why not
Organising queues or channels between objects take the system's memory, thus increasing the total memory consumption by the program.

Related

 * Minimize mutability