gpt4 book ai didi

c++ - 多线程在哪个 "level"最有效?

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:29 25 4
gpt4 key购买 nike

请原谅我使用了“水平”这个词,但我不确定还能用什么调用它。我正在写一个游戏引擎。该游戏引擎加载了一些运行所需的文件。这些文件大多是文件,其中包含许多文件。这些文件被单独分解成 zlib 压缩 block 。

我的问题是我应该在哪个级别实现多线程?

为了论证我们假设:

15 个归档文件(每个 10mb)

每个存档中有 20 个文件 (0.5mb)

每个文件都由数百个压缩 block 组成。

我意识到,如果我在 block 膨胀级别上这样做,它会平均分配任务,并且如果有一个非常大的文件,就不会有瓶颈。但是我冒着创建过多线程的风险。

编辑:我应该澄清一下,我理解来自磁盘的多线程 I/O 并没有多大帮助。对于我的问题,我主要是问这些文件在不同层次上的处理和解析。想象一下,I/O 已经处理完毕,我只是担心解析这些文件。

最佳答案

如果您的代码是 I/O 绑定(bind)到单个磁盘驱动器,那么多线程可能会适得其反。您需要计算出您的程序读取文件所花费的时间以及处理数据所花费的时间。

如果大部分时间用于从磁盘读取数据,那么多线程就帮不了你那么多了。

如果大部分时间用于数据处理,那么每个核心 1 个线程是一个很好的经验法则,但您应该将读取部分留给单个线程,处理部分留给 1 个线程池每个代码(即单生产者多消费者设计)。

关于c++ - 多线程在哪个 "level"最有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989411/

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