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.