Here's the code for the SyncQueue constructor.

Code:
SyncQueue<NodeType>::SyncQueue()
{
	Node<NodeType> *dummy = new Node<NodeType>;  // Set up initial dummy node on empty queue
	head = dummy;
	tail = dummy;
	garbage = dummy;
}
The garbage pointer is only there to cleanup when the processing of the queue is done. Prevents memory leaks.

--clay