/c-sharp-console.app

Тестовое задание по многопоточности

Primary LanguageC#MIT LicenseMIT

Написать консольную программу, которая для заданных каталогов (включая подкаталоги) рассчитывает хэш-суммы содержащихся в них файлов и сохраняет результаты расчетов в базу данных.

Требования к механизму расчетов:

  • Разбить работу программы на несколько потоков: первый поток обходит каталоги, ищет файлы, для которых нужно выполнить расчет, и помещает их в очередь.
  • Рабочие потоки извлекают из очереди описания файлов и выполняют для их содержимого расчет хэш-суммы.
  • Еще один поток сохраняет результаты вычисления в БД.
  • В процессе работы программа должна периодически выводить в консоль информацию о прогрессе выполнения в следующем виде:
    • Количество обработанных файлов/Количество файлов для обработки.

Требования к сохранению результатов:

  • В БД должен сохраняться результат расчета по каждому файлу.
  • В БД должна сохраняться информация об ошибках, произошедших в процессе обработки файлов.

Требования к реализации:

  • Язык реализации: C#;
  • СУБД: Oracle/MSSQL;
  • Синхронизацию потоков выполнять с помощью базовых механизмов платформы (без использования TPL, Concurrent-коллекций).
  • Для расчета хэш-сумм можно использовать классы платформы .NET.
  • Результат выполнения задания должен находиться на одном из публичных Git-репозиториев и должен включать:
    • ER-диаграмму БД;
    • Скрипты на создание и наполнение БД;
    • Код программы.