首页 > 解决方案 > 生产者/消费者,生产者比消费者快,我应该使用双缓冲区还是 spsc_queue?(C++)

问题描述

我有一个系统将数据从源中提取到缓冲区中,然后使用 ofstream 将该缓冲区写入文件。接收数据比写入磁盘快得多,所以我不想等待写入函数来接收额外的数据。我有 20 个接收器,每个都写入一个单独的二进制文件。

我基本上需要分别线程接收和写入函数,以便接收器可以在将上次接收的数据记录到磁盘时接收。我尝试了 spsc_queue,但它似乎不适用于缓冲区或结构队列(尝试了其中包含数据和元数据的结构)。有人有推荐的方法吗?我在想某种双缓冲机制。基本上我想最小化或删除编写器线程上的等待时间。

标签: c++multithreadingbufferproducer-consumer

解决方案


推荐阅读