Queue disciplines, priorities, blocking, and abandonment

Model who is served next, what happens when buffers fill, and how priority, preemption, and abandonment change outcomes.

On this page
  1. FIFO is a policy, not a law of queues
  2. Priority improves one class by making another class wait
  3. Finite capacity creates blocking and back-pressure
  4. Some work leaves before service
  5. Check queue rules with small, forced cases

FIFO is a policy, not a law of queues

First-in, first-out is a sensible default for many processes, but real systems also use triage priority, shortest processing time, due dates, appointment classes, dedicated lanes, or other selection rules.

Use the rule the real service uses. A queue discipline can change who waits even when total capacity and total throughput remain unchanged.

Priority improves one class by making another class wait

A priority rule should specify both how priority is assigned and what happens when priorities tie. Measure waiting separately by class; one overall mean can hide starvation of low-priority work.

If higher-priority work can interrupt service already in progress, define whether the interrupted job resumes, restarts, or loses work. Preemption is a stronger assumption than simply moving a job to the front of a waiting line.

Finite capacity creates blocking and back-pressure

When a downstream queue is full, decide what happens to the upstream completion. It might remain at the server and hold the resource, wait in a separate buffer, divert to another route, or be rejected.

This detail matters in factories, beds, parking, transport, and any process with physical space limits. Treating every queue as infinite removes a real source of congestion.

Some work leaves before service

Customers may balk when they see a long line or abandon after waiting too long. Perishable jobs can expire; requests can time out; patients can leave without being seen.

Record these exits as outcomes. Removing them silently can make waiting time look better precisely because the most delayed work disappeared from the measurement.

Check queue rules with small, forced cases

These tests are easier to understand than debugging a full model after a priority or blocking rule has changed system-wide results.

  • Put two jobs with different priorities into the queue and verify which one starts first.
  • Fill a finite downstream buffer and verify where the next completed job waits and which resource it holds.
  • Force an abandonment timeout and verify that it is counted in the correct outcome.
  • Test equal-priority ties so results do not depend on an accidental ordering rule.

References