A BackgroundQueueProcessingJob is a specialized form
of a BackgroundJob for background processing of a queue.
Each item in the queue (added by sending #add: item)
is processed (using the instance variable job).
Implementation notes:
The thread is running only if there is at least one item
to process. When the queue is empty, the thread teminates.
It is started again when a new item is added to the queue.
[instance variables:]
queue <OrderedCollection> the queue of items to be procesed
queueAccessLock<RecursionLock> a lock used to synchronize
access to the queue
queueProcessedSema<Semaphore> a semaphore signaled when the queue is
processed (and therefore empty).
[class variables:]