Wait() and Watching()
Wait()
- synchronize to the next clock edge
- implemented on threads using a mutex var
Watching()
- can be implemented using wait() but would be expensive
- represents asynchronous signals and events
- in synchronous model, these are evaluated by the clock process
- encapsulated in a lambda object that contains a pointer to the waiting process