Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

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;
};