gpt4 book ai didi

c# - 多线程是否等于更少的 CPU?

转载 作者:行者123 更新时间:2023-11-30 13:23:56 24 4
gpt4 key购买 nike

我有一小部分我想处理的相当大的文件,这让我开始思考......

在 C# 中,我正在考虑使用 TPL 的 Parallel.ForEach 来利用现代多核 CPU,但我的问题更多是假设性的;

在实践中使用多线程是否意味着并行加载文件需要更长的时间(使用尽可能多的 CPU 内核),而不是顺序加载每个文件(但可能使用更少的 CPU-利用率)?

或者换一种说法(:

多线程的意义何在?更多并行但速度较慢的任务,而不是一次将所有计算资源集中在一项任务上?

最佳答案

为了不增加延迟,并行计算程序通常只为每个内核创建一个线程。非纯粹计算性的应用程序倾向于添加更多线程,以便可运行线程的数量就是内核的数量(其他线程处于 I/O 等待状态,不会竞争 CPU 时间)。

现在,磁盘 I/O 绑定(bind)程序的并行性很可能会导致性能下降,如果磁盘具有不可忽略的寻道时间,那么将有更多时间浪费在执行寻道上,而实际读取的时间会更少。这称为“搅动”或“搅动”。电梯排序有些帮助,真正的随机访问(例如固态存储器)帮助更多。

并行几乎总是会增加完成的总原始工作量,但这仅在电池生命周期最重要的情况下才重要(当您考虑其他组件使用的功率时,例如屏幕背光,完成速度通常更快总体上还是更有效率)。

关于c# - 多线程是否等于更少的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640289/

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