| |
| blocking wait |
| ------------- |
| |
| - allocate a new clock entry |
| - add to list of pending sync waits |
| - do { |
| wait on entry |
| } while (entry != restart) |
| - free entry/remove from list |
| |
| async wait |
| ---------- |
| |
| - if no thread, start thread |
| - alloc a new clock entry |
| - add to list of pending async waits |
| - signal thread to restart timeouts |
| |
| async thread |
| ------------ |
| |
| while (true) { |
| if (no entry) wait for restart |
| do { |
| take first entry |
| wait on it |
| } while (entry != restart) |
| call entry signal function |
| free entry/remove from list |
| } |
| |
| clock adjust |
| ------------ |
| |
| - loop over sync/async entries |
| - restart all entries |
| |
| |
| |
| |