C# 中的并行和工作划分?

2024-03-28

(假设我有 10 个核心)

当我写的时候:

Parallel.For(0, 100, (i,state) =>  
         { 
            Console.WriteLine(i); 
         });

问题:

  1. 每个核心分配数量的公式是什么? (是吗100/10?)

  2. 在执行点,每个核心是否已经知道将处理哪些数字?或者它是否每次消耗一个新的数字[0..100]存储库(让我们暂时忽略块或范围)?

  3. The i参数 - 它是否指的是0..100索引还是每个线程及其“要处理”数字中的相对索引?


  1. 它没有记录。工作任务可能会从共享工作池中检查工作块。可能他们一次获取的项目少于 10 个,因为获取 10 个项目将导致在临近结束时正在工作的线程少于 10 个。Parallel.For手术。单个慢速线程可能会造成顺序瓶颈,因为它可能是唯一仍在运行的线程。最好将工作划分为较小的块,以便此类瓶颈变得更小。

  2. 我不知道。我很确定人们必须使用 Reflector 来撬出这些信息。

  3. 它指的是全局索引,因此您可以使用它来访问共享列表或其他内容。每一个i您的工作代表所见过的将是独一无二的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的并行和工作划分? 的相关文章

随机推荐