in reply to Synchronising threads with signals (or not)
You need to design your application so that the two processes don't have to "start at a similar time to one another." Each one should have a job to do and should wait for a signal unique to them that indicates that they might have work to do ... i.e. that they should not be asleep anymore. Each one, upon waking up, immediately resets the signal they were sleeping for, then processes a work-to-do queue until that queue is empty. Or perhaps the process just "waits on the queue" as needed using semantics already built into the thread-safe-queue object. Each thread of a multithreaded application should not be in any way dependent on what else is happening in any other thread and should be free to pursue whatever its appointed task is, as fast as it can.