The Cargo abstraction implements an interrupttransparent
queue according to the first-in, first-out (FIFO)
strategy. The critical operations are enqueue() and
dequeue(). They will be discussed below. The constructor
Cargo() takes care of a specific initial state representing
an empty queue with the following properties: (a) next
(i.e. the head pointer) is nil and (b) tail points to next.
In fact, an empty Cargo queue is not really empty in the
usual sense. Rather, in this case, tail points to a dummy
element which is represented by the queue head pointer.