#pragma once #include "ConcurrentList.h" class ProducerThread { public: virtual bool StartThread(); virtual bool StopThread(); protected: ProducerThread(); virtual ~ProducerThread(); protected: virtual void ThreadFunction() = 0; private: static unsigned int __stdcall TheThread(void *pParam); protected: bool m_bEngineRunning; HANDLE m_hHandle; }; class ConsumerThread { public: virtual bool StartThread(); virtual bool StopThread(); protected: ConsumerThread(); virtual ~ConsumerThread(); void PutDataToQue(void * pData); virtual void ReleaseData( void* pData ) = 0; virtual void ConsumeDataFromQue( void * pData ) = 0; private: static unsigned int __stdcall TheThread(void *pParam); protected: ConcurrentList m_queData; private: bool m_bEngineRunning; HANDLE m_hHandle; }; class MultiConsumerThread { public: virtual bool StartThread(int iThread); virtual bool StopThread(); protected: MultiConsumerThread(); virtual ~MultiConsumerThread(); void PutDataToQue(void * pData); virtual void ReleaseData( void* pData ) = 0; virtual void ConsumeDataFromQue( void * pData ) = 0; private: static unsigned int __stdcall TheThread(void *pParam); protected: ConcurrentList m_queData; private: bool m_bEngineRunning; vector m_vecHandle; };