gpt4 book ai didi

C++:当每个线程都应该同时执行 I/O 和 CPU 密集型任务时的多线程设计

转载 作者:行者123 更新时间:2023-11-30 03:45:32 25 4
gpt4 key购买 nike

我有一种情况,我正在将我的工作卸载到线程。两部分的“工作”折衷:

  • 首先压缩给定的数据缓冲区
  • 然后将压缩后的数据写入磁盘

我的主线程不断地创建许多数据缓冲区。

我最初考虑的是线程池设计,但可能池中的所有线程都在等待 I/O。

如果我在每次创建新 dataBuffer 时都创建一个新线程,我会看到创建了大量线程。这可能会有内容切换的开销,但由于上下文切换,我的 CPU 周期不会被浪费。

管理这种情况的好的设计是什么?

最佳答案

如果我能帮上忙,让我试试。

1. First compress the given data buffer
2. Then write the compressed data to disk

我从您那里了解到您生成了数据缓冲区,您需要将其压缩并存储到磁盘中。

如果顺序很重要并且数据源不是时间密集型的,则不会松散数据直到下一个周期,然后你可以有下面的方法。

线程A

生成数据缓冲区

向线程 B 发出信号,说明您有数据。

线程B

等待线程A的信号

检索数据并压缩。

向线程 C 发出信号以存储它。

线程 C

等待线程B的信号

检索压缩数据,并存储到磁盘中。

关于C++:当每个线程都应该同时执行 I/O 和 CPU 密集型任务时的多线程设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34736331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com