Asynchronous Synchronisation


ZAB provides synconisation mechanisms similar to those provided by the C++ standard thread support library. The main difference is that these synchronisation mechanisms are non-blocking in terms of the event loop. This allows mutual exclusion and thread co-ordination without interfering with the event loops. This also allows the same thread to “wait” or “co-ordinate” with itself. For example, the same thread may have different coroutines all blocking on the same async_mutex.