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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д