Dispatcher implementation interfaces.
|
|
template<typename T > |
| using | pw::async2::PendOutputOf = typename decltype(std::declval< T >().Pend(std::declval< Context & >()))::value_type |
| |
◆ dispatcher_lock()
A lock guarding the Task queue and Waker lists. This is a Dispatcher implementation detail and should only be used by Dispatcher backends.
This is an InterruptSpinLock in order to allow posting work from ISR contexts.
This lock is global rather than per-dispatcher in order to allow Task and Waker to take out the lock without dereferencing their Dispatcher* fields, which are themselves guarded by the lock in order to allow the Dispatcher to Deregister itself upon destruction.