Roy*_*mir 5 .net c# parallel-processing .net-4.0 task-parallel-library
(假设我有10个核心)
我写的时候:
Parallel.For(0, 100, (i,state) =>
{
Console.WriteLine(i);
});
Run Code Online (Sandbox Code Playgroud)
问题:
为每个核心分配数量的公式是什么?(是100/10
吗?)
在执行点,每个核心是否已经知道将要处理哪些数字?或者它每次从[0..100]
存储库中消耗一个新的数字时消耗(让我们暂时忽略块或范围)?
该i
参数-它指的是0..100
指数还是在每个线程和它的"会处理"的数字相对指数?
它没有记录。工作任务可能会从共享工作池中检查工作块。可能它们一次获取的项目少于 10 个,因为获取 10 个项目将导致在操作接近结束时正在工作的线程少于 10 个Parallel.For
。单个慢速线程可能会造成顺序瓶颈,因为它可能是唯一仍在运行的线程。最好将工作划分为较小的块,以便此类瓶颈变得更小。
我不知道。我很确定人们必须使用 Reflector 来撬出这些信息。
它指的是全局索引,因此您可以使用它来访问共享列表或其他内容。您的工作代表所看到的每一个都i
将是独一无二的。