This PR adds a futex-like awaitable atomic location abstraction. This can be useful for implementing various kinds of synchronization and communication primitives. For example, it can be used to implement mutexes and condition variables with good performance. Below shows the speed up obtained by replacing the fair mutex and condition with unfair mutex and condition implemented using the awaitable abstraction:
This PR adds a futex-like awaitable atomic location abstraction. This can be useful for implementing various kinds of synchronization and communication primitives. For example, it can be used to implement mutexes and condition variables with good performance. Below shows the speed up obtained by replacing the fair mutex and condition with unfair mutex and condition implemented using the awaitable abstraction: