【发布时间】:2011-12-06 05:22:55
【问题描述】:
当您生成多个任务时,如下所示:
for (int i = 0; i < 1000000; i++) {
// create a new task
tasks[i] = new Task<int>((stateObject) => {
tls.Value = (int)stateObject;
for (int j = 0; j < 1000; j++) {
// update the TLS balance
tls.Value++;
}
return tls.Value;
}, account.Balance);
tasks[i].Start();
}
这些任务基本上是在 ProcessThread 上运行的。因此,我们可以为 1,000,000 个任务对 1 个进程线程进行 1,000,000 次切片。
是不是 TPL 任务调度器查看操作系统并确定我们在多核机器中有 8 个虚拟进程线程,然后将 1,000,000 个任务的负载分配给这 8 个虚拟进程线程?
【问题讨论】:
-
我不确定语法,但逻辑似乎是正确的。我会推荐parallel.for
标签: c# multithreading task-parallel-library