Resolve BMK-247
Closes BMK-247. Use a semaphore to prevent subprocesses from starting until all subprocesses have been created. The "wait" command is bash was sometimes failing because the first subprocess was able to complete before the last subprocess had been created, so "wait" was looking for a process that already no longer existed.