Распараллелить выполнение цикла на все ядра процессора - C#
Формулировка задачи:
Есть цикл for с очень большим количеством итераций, его выполнение отнимает кучу времени, хочу его ускорить с помощью потоков - создать количество потоков равное количеству ядер процессора и чтоб каждый поток проделывал работу со своей частью данных (количество требуемых итераций / количество потоков).
Как это сделать? Буду очень благодарен за пример кода. Количество ядер узнаю с помощью Environment.ProcessorCount.
Решение задачи: «Распараллелить выполнение цикла на все ядра процессора»
textual
Листинг программы
Parallel.For(0, ih, y =>
{
//for (int y = 0; y < ih; y++)
for (int x = 0; x < iw; x++)
{
i = iw * y * 3 + x * 3;
j = rw * (y % rh) * 3 + (x % rw) * 3;
imgValues[i] = (byte)((imgValues[i] & cmask[b]) + (rValues[j] >> cshr[b]));
imgValues[i + 1] = (byte)((imgValues[i + 1] & cmask[b]) + (rValues[j + 1] >> cshr[b]));
imgValues[i + 2] = (byte)((imgValues[i + 2] & cmask[b]) + (rValues[j + 2] >> cshr[b]));
}
});