added lock-free ProducerConsumerQueue