#incude <omp.h>
void func()
{
std::vector<std::string> allFileNames;
// заполнить вектор путями всех нужных файлов в директории
#pragma omp parallel for num_threads(4)
for( auto & fileName : allFileNames )
{
// делать всякое
#pragma omp critical
{
// тут делать всякое без конфликтов между потоками
}
}
}