gpt4 book ai didi

C#4.0多线程循环: when to use,什么时候不用?

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:50 24 4
gpt4 key购买 nike

我正在尝试寻找使用 C# 4.0 线程循环的好方法。假设我现在有两个多维数组,宽度/高度为 8/5,即每个数组有 40 个元素。

通过我目前正在优化的一段代码,我遇到过几次这样的情况,我只是逐个元素地乘以这样的两个表(使用嵌套循环)

是否值得为这样的事情使用 4.0 的线程循环?如果不是,使用或不使用它的良好做法/大小估计是什么?

亲切的问候,

最佳答案

多线程嵌套循环的挑战是将工作和数据分离到独立的池中。如果您的循环在通过它们的过程中修改了数组,那么在拆分为多个线程时这将无法正常工作。如果您已经设置了循环以便输入数据是只读的,并且循环的输出进入不同的数据结构,那么多线程就有希望了。只读输入 + 本地化输出有利于多线程。

还有一个问题是每次循环迭代中发生了多少工作。您不会从每次迭代执行很少的循环的多线程中获得太多好处。在一个小的快速循环中,大部分挂钟时间将花在循环管理上,而不是花在工作本身上,使循环多线程化只会增加循环管理开销。如果您的循环在每次迭代中执行大量工作,那么您更有可能看到多线程的好处。

如果每次迭代工作包括文件 I/O 等阻塞操作,您可能会认为多线程循环会有所改善。在许多情况下,对文件 I/O 绑定(bind)循环进行多线程处理只会让事情变得更糟。这些文件 I/O 另一端的硬件设备通常不能更快地移动物理读/写头,因此要求它同时做更多的事情不会有任何好处。在尝试对循环进行多线程处理之前,您最好先研究使用异步文件 I/O。

最后,不要基于猜测多线程可能在哪些方面有所帮助来执行这些操作。在多线程之前和之后测量代码的性能。如果你找不到多线程有显着改善的情况,那就不要做。有时为了获得微小的改进而付出额外的努力和风险是不值得的。

关于C#4.0多线程循环: when to use,什么时候不用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399572/

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