Multithreading 生产者/消费者-I/O磁盘

Multithreading 生产者/消费者-I/O磁盘,multithreading,producer-consumer,Multithreading,Producer Consumer,我在磁盘中有一个压缩文件,它是按块分区的。我从磁盘读取一个块,将其解压缩到内存,然后读取数据 可以创建一个生产者/消费者,一个线程从磁盘恢复压缩块并放入队列,另一个线程解压并读取数据 表演会更好吗 谢谢 是的,可以这样设置。您是否会看到性能的提高在很大程度上取决于机器、解压数据的确切性质等。如果不是太麻烦,而且您的数据集是大量的,我建议您这样做并进行测量,看看是否更快。如果没有其他问题,它与利用某种map reduce框架所需的工作类似。我怀疑解压缩数据的线程将花费大部分时间等待从磁盘读取压缩块

我在磁盘中有一个压缩文件,它是按块分区的。我从磁盘读取一个块,将其解压缩到内存,然后读取数据

可以创建一个生产者/消费者,一个线程从磁盘恢复压缩块并放入队列,另一个线程解压并读取数据

表演会更好吗


谢谢

是的,可以这样设置。您是否会看到性能的提高在很大程度上取决于机器、解压数据的确切性质等。如果不是太麻烦,而且您的数据集是大量的,我建议您这样做并进行测量,看看是否更快。如果没有其他问题,它与利用某种map reduce框架所需的工作类似。

我怀疑解压缩数据的线程将花费大部分时间等待从磁盘读取压缩块的线程


如果CPU绑定的解压缩比IO绑定的从磁盘读取数据块花费的时间更长,我会感到惊讶。

这一切都取决于磁盘和您使用的压缩,例如解压缩Gzip文件在我们的服务器上是CPU绑定的。这就是重点。如果我使用重压缩,解压线程可能不会等待i/O线程,然后我将获得性能提升。就我而言,我只有一台机器。我如何使用它?感谢尽管Map/Reduce很流行,因为它允许使用集群进行简单的水平缩放,但完全可以在单节点配置中使用它。看看这个。