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