Here are some cases where it is an advantage to use a queue as the interface of a driver:
- When the peripheral/application needs to receive data of an unknown length
- When data must be received asynchronously to requests
- When a driver should receive data from multiple sources without blocking the caller
- When data rates are sufficiently slow to allow a minimum of 10's of µS per interrupt (when being implemented on the hardware, in this example)