#pragma once #include #include #include class Block; class TickQueue : public virtual Framework::ReferenceCounter { private: int maxSize; int readPosition; int writePosition; Block **queue; std::mutex mutex; std::condition_variable hasBlocks; std::condition_variable hasNoBlocks; bool exit; public: TickQueue(); ~TickQueue(); void startNextTick( Framework::Array *zSources ); void addToQueue( Block *zBlock ); Block *zNextBlock( bool &waiting ); void requestExit(); void waitForEmpty(); };