#ifndef HGL_THREAD_RING_BUFFER_SOURCE #define HGL_THREAD_RING_BUFFER_SOURCE /** * 由于设定read_pos=write_pos表示无数据,所以当数据刚好读写到结尾时,不立即转成0,而是仍为buffer_size */ //-------------------------------------------------------------------------------------------------- namespace hgl { template RingBuffer::RingBuffer(int size) { buffer_size=size; buffer=new T[size]; // memset(buffer,0,size); //有write_pos/read_pos没有根本读不出数据,所以无需清0 read_pos=0; write_pos=0; } template RingBuffer::~RingBuffer() { delete[] buffer; } template void RingBuffer::Clear() { read_pos=0; write_pos=0; } template void RingBuffer::SafeClear() { Lock(); Clear(); Unlock(); } template void RingBuffer::ClampPosition() { if(read_pos