Второе домашнее задание и просто интересный проект, касаемый многопоточности и многопроцессности
- Сбилдить в студии или райдере
- -> bin -> debug -> *.exe
- Запустить нужную эксешку через cmd, указав в args папку с *.bmp (по дефолту будет поворачивать изображения в текущей папке)
- Результы складываются в директорию results, которая будет создана в выбранной папке.
- Проект mutlithread-image-rotator поварачивает изображения на 90 градусов против часовой стрелки. Задача распалливается и каждый тред занят одним файлом. Параллелятся при помощи
Parallel.ForEach(...)
. Поворачивает весьма шустро (50 изображений за 3.5с на моём старичке). Наверно можно выжать больше, если напрямую использоватьThread
- Проект multiprocess-image-rotor занимается тем же самым, но по другому. Он имеет те же параметры запуска. И так же складывает всё в results. Не стесняйся запускать сразу много екзешек, так как суть этого проекта в том, что задачи параллелятся между процессами. Делается это через
MemoryMappedFile
, в котором через\n
сложены все имена файлов, подлежащих нещадному повороту. Желательно все эксешки запускать с одинаковыми параметрами запуска, в противном случае может сломаться. Эта задача хорошо так подогрела мою пятую точку, так что за smell code и громоздкость извините.
.Net Framework 4.7.1 вроде бы.