0. Запускаете в 1 поток.
1. Проверяете существование файл-флага что процедуры выполнены/не выполнены.
2. Выполняется ряд процедур.
3. Записываем условный файл-флаг в директорию что процедуры выполнены.
4. Увеличиваем кубиком количество потоков/выполнений, если файл-флаг существует - новые потоки игнорируют одноразовые процедуры.
Примерно так, думаю логика понятна.