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