我项目的代码库当前包含一个多生产者,单个消费者数据编写者。它使用2个循环缓冲区和几个CRITICALSECTION锁来写入可变大小的数据流,这些数据流作为char *传入,具有字节数。它从数十个编写char *的线程中获取数据,并将它们写入二进制文件。
我正在寻求改进这种设计,但似乎所有在网上编写的实现都涉及简单的原始类型,而不是编写char数组。任何人都可以建议我进行研究,因为我的google-fu非常弱吗?
我的测试实现基本上是:
Record(char* data, uint32_t byte_count)
{
c_section.Lock(); //CCriticalSection, std::mutex, whatever
recording_buffer.write(data, byte_count); //in house circular buff
c_section.Unlock();
}
FileThread()
{
while(run_thread)
{
if(recording_buffer.size() > 0)
{
c_section.Lock();
//read the entire size of the filled bytes of the buffer
//multiple entries are written to the file at once.
write_to_file(recording_buffer.read(recording_buffer.size()), recording_buffer.size();
c_section.Unlock();
}
std::this_thread::sleep_for(10ms);
}
}