https://blog.youkuaiyun.com/weiyu00/article/details/84750560
//RingBuffer.h
#pragma once
template <class T>
class CRingBuffer
{
public:
CRingBuffer()
{
m_pBuffer = NULL;
m_nSize = 0;
m_nUnreadSize = 0;
m_nWritePos = 0;
m_nReadPos = 0;
}
~CRingBuffer()
{
m_cs.Lock();
if (m_pBuffer != NULL)
{
delete [] m_pBuffer;
m_pBuffer = NULL;
m_nSize = 0;
m_nUnreadSize = 0;
m_nWritePos = 0;
m_nReadPos = 0;
}
m_cs.Unlock();
}
//清空环形缓冲区
void Clear()
{
m_cs.Lock();
m_nUnreadSize = 0;
m_nWritePos = 0;
m_nReadPos = 0;
m_cs.Unlock();
}
//设置环形缓冲区
//nSize:缓冲区大小
void SetBuffer(UINT nSize)
{
m_cs.Lock();
if (m_pBuffer != NULL)
{
delete [] m_pBuffer;
m_pBuffer = NULL;
m_nSize = 0;
m_nUnreadSize = 0;
m_nWritePos = 0;
m_nReadPos = 0;
}
m_pBuffer