Task.Factory.Startnew и непонятная работа цикла - C#
Формулировка задачи:
Доброго времени суток. Задание лабораторной такое - использовать класс Task, реализовать вычисление интеграла параллельно. Количество потоков зависит от количества процессоров.
Собственно вот код
Вопрос в следующем: на моей машине Environment.ProcessorCount = 4, по идее, счетчик d не должен выполнять тело цикла при 4, но он усердно это делает, и поэтому при обращении к lst[d] получаю "индекс вне границ". Почему так происходит? (lst - список, lst.Length=Environment.ProcessorCount)
Спасибо
TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
Task.Factory.StartNew(() =>
{
for (int d = 0; d < Environment.ProcessorCount; d++)
{
Task.Factory.StartNew(() => function(lst[d]), atp);
}
}
).ContinueWith(p => { Console.WriteLine("Интеграл равен: {0}", result); });Решение задачи: «Task.Factory.Startnew и непонятная работа цикла»
textual
Листинг программы
for (int d = 0; d < Environment.ProcessorCount; d++)
{
int temp = d;
Task.Factory.StartNew(() => function(lst[temp]), atp);
}