5 - allocate a new clock entry
6 - add to list of pending sync waits
9 } while (entry != restart)
10 - free entry/remove from list
15 - if no thread, start thread
16 - alloc a new clock entry
17 - add to list of pending async waits
18 - signal thread to restart timeouts
24 if (no entry) wait for restart
28 } while (entry != restart)
29 call entry signal function
30 free entry/remove from list
36 - loop over sync/async entries