I approve of switching from thread to process, much more reliable and easier to debug.

But what happens if host is under load for some reason, you don't know how long new process will take to start.  These static timer-values could become wrong, this is always tricky-part of multi-threading/processing.  Somewhere in autotest, we have a barrier class you could use, that will provide the guarantee along with a timeout w/o having to use timers.