Поток выходит за пределы условия - C#
Формулировка задачи:
Доброе утро. Столкнулся с такой проблемой, что поток начинает выделяться даже, когда в условием это запрещено. Вот код:
Тут происходит просто перемножение матрицы на вектор, и количество потоков выделяется под количество процессоров. Допустим при N = 5, не смотря на условие цикла for (i < n) i = 5 все равно выполняется, что приводит к ошибке выхода за пределы массива вектора \ матрицы.
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]; } ));
Решение задачи: «Поток выходит за пределы условия»
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]; } )); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д