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タスクスケジューラは、OSを見て、マルチコアマシンに8つの仮想プロセススレッドがあることを確認し、これらの8つの仮想プロセススレッドに1,000,000タスクの負荷を割り当てますか?
構文についてはわかりませんが、ロジックが正しいようです。私はparallel.forをお勧めします – Bengie