80 lines
1.3 KiB
C++
80 lines
1.3 KiB
C++
#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<void*> 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<void*> m_queData;
|
|
|
|
private:
|
|
bool m_bEngineRunning;
|
|
vector<HANDLE> m_vecHandle;
|
|
|
|
}; |