gpt4 book ai didi

.net - 任务 Parallel.For Parallel.ForEach 负载均衡,partiioning .Net

转载 作者:行者123 更新时间:2023-12-01 12:57:37 30 4
gpt4 key购买 nike

执行并行方法 Parallel.For 和 Parallel.ForEach,

内部提供自己的负载平衡和分区以更好地执行?

如果是这样,您希望在什么情况下使用 Partitioner 类编写自己的分区以提高性能?

最佳答案

例程确实提供了它们自己的分区。

它们基于“典型”场景,但有时可能需要指导,尤其是在异常情况下。

例如,默认分区为IEnumerable<T>实现(不实现 IList<T> )将从每个任务的一个小组开始,然后慢慢扩大规模。但是,如果您知道您的 IEnumerable<T>将一次缓慢地送入一个项目,这将导致阻塞,因为 Parallel类将“等待”下一个项目,直到它接收到足够的分区元素并对其进行调度。

通过提供您自己的分区程序,您可以防止这种情况发生并获得更好的吞吐量。

自定义分区程序有用的另一个很好的例子是,如果每个循环项的工作量非常小。在这种情况下,对自己进行分区并在分区上工作可以避免不必要的开销。这包含在 How to: Speed Up Small Loop Bodies 中。 MSDN 上的页面。

关于.net - 任务 Parallel.For Parallel.ForEach 负载均衡,partiioning .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843443/

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