Поток выходит за пределы условия - C#

Узнай цену своей работы

Формулировка задачи:

Доброе утро. Столкнулся с такой проблемой, что поток начинает выделяться даже, когда в условием это запрещено. Вот код:
ThreadPool.SetMaxThreads(Environment.ProcessorCount, Environment.ProcessorCount);
                for (int i = 0; i < n; i++)
                    ThreadPool.QueueUserWorkItem(new WaitCallback((s) =>
                        {
                            for (int j = 0; j < n; j++)
                                matrix_exit[i, j] = matrix[i, j] * vector[i];
                        }
                        ));
Тут происходит просто перемножение матрицы на вектор, и количество потоков выделяется под количество процессоров. Допустим при N = 5, не смотря на условие цикла for (i < n) i = 5 все равно выполняется, что приводит к ошибке выхода за пределы массива вектора \ матрицы.

Решение задачи: «Поток выходит за пределы условия»

textual
Листинг программы
                for (int i = 0; i < n; i++)
                {
                   int t = i;
                    ThreadPool.QueueUserWorkItem(new WaitCallback((s) =>
                        {
                            for (int j = 0; j < n; j++)
                                matrix_exit[t, j] = matrix[t, j] * vector[t];
                        }
                        ));
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы