I think option 2 and 3 seem pretty appealing. Saves the logistics of controlling two threads.