yet-another-test-task-av

I'm not sure if this works under Windows.

To build:

cmake .
make all

Usage example:

./yet_another_test_task_av testfolder
====== Scan result ======
Processed files: 11
JS Detects: 1
CMD Detects: 2
EXE Detects: 2
Errors: 1
Execution time: 0:0:0
=========================

Как это работает:

  • В Filter.cpp обьявлен класс фильтра, который в конструкторе принимает расширения файлов и строки, на которые он должен срабатывать, и реализует метод Match для проверки того, является ли файл по некоторому пути "подозрительным"
  • В SafeQueue.h, Job.h обьявлены структуры для многопоточной синхронизации
  • В main мы заранее создаем экземпляры фильтров в соответствии с условием, запускаем n_cpu * 2 потоков и распределяем между ними файлы в текущей директории
  • Потом мы отправляем в потоки сообщение о прекращении работы, ждем их остановки и печатаем статистику

Однопоточная версия программы упиралась в дисковое хранилище. Многопоточная реализация позволяет полностью утилизировать CPU, что дает прирост скорости работы, особенно для папок с большими файлами.