Поток выходит за пределы условия - 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];
}
));
}