18 #define DATA_CACHE_MAX_SIZE 100 //一个缓冲区最多有100条队列,可更改 19 #define DATA_CACHE_QUEUE_MAX_SIZE 500 //一个队列中最大缓存500条数据,可更改 32 m_pDataCache =
new std::vector<BlockingReaderWriterQueue<T>>();
37 if (
nullptr != m_pDataCache)
40 m_pDataCache =
nullptr;
46 return m_pDataCache->size();
56 iIndex = m_pDataCache->size();
57 m_pDataCache->resize(iIndex + 1);
59 catch (std::exception e)
61 printf(
"ERROR:缓冲区扩容失败,%s\n",e.what());
67 printf(
"ERROR:缓冲区扩容失败,超过最大缓冲区限制!\n");
75 if (i32BufferIndex < 0 || i32BufferIndex >= m_pDataCache->size())
77 printf(
"ERROR:向缓冲区存放数据失败,入参校验未通过!\n");
80 if (!m_pDataCache->at(i32BufferIndex).enqueue(inputValue))
82 printf(
"ERROR:向缓冲区存放数据失败,向第%d个队列中入队时失败!\n", i32BufferIndex);
91 if (i32BufferIndex < 0 || i32BufferIndex >= m_pDataCache->size())
93 printf(
"ERROR:从缓冲区获取数据失败,入参校验未通过!\n");
99 m_pDataCache->at(i32BufferIndex).wait_dequeue(outputValue);
103 printf(
"ERROR:从缓冲区获取数据失败,出队失败!\n");
std::vector< BlockingReaderWriterQueue< T > > * m_pDataCache
int32_t GetDataByIndex(int32_t i32BufferIndex, T &outputValue)
#define DATA_CACHE_MAX_SIZE
int32_t InsertDataByIndex(T inputValue, int32_t i32BufferIndex)
int32_t ExpandDataCacheSize(int32_t &iIndex)