У меня подобное реализовано через глобальные переменные.
1 поток инициализирует глобальную переменную и присваивает ей значение - 1. Если второй поток видит, что значение глобальной переменной - 1, значит он ждет в цикле какое-то время.
Потом первый поток создает все необходимые файлы и...