template <typename T> class N_ProducerSingleConsumerQueue : public CryMT::detail::N_ProducerSingleConsumerQueueBase;
CryThread.h
Producer/Consumer Queue for N to 1 thread communication lockfree implemenation, to copy with multiple producers, a internal producer refcount is managed, the queue is empty as soon as there are no more producers and no new elements
void AddProducer();
to correctly track when the queue is empty(and no new jobs will be added), refcount the producer
void Init(size_t nSize);
N_ProducerSingleConsumerQueue();
bool Pop(T * pResult);
void Push(const T & rObj);
void RemoveProducer();
void SetRunningState();
needs to be called before using, assumes that there is at least one producer so the first one doesn't need to call AddProducer, but he has to deregister itself