C/C++ API Reference
Loading...
Searching...
No Matches
Dispatcher backends

Oveview

Dispatcher implementation interfaces.

Classes

class  pw::async2::NativeDispatcherBase
 

Typedefs

template<typename T >
using pw::async2::PendOutputOf = typename decltype(std::declval< T >().Pend(std::declval< Context & >()))::value_type
 

Functions

 pw::async2::PW_MODIFY_DIAGNOSTICS_PUSH ()
 
 pw::async2::PW_MODIFY_DIAGNOSTIC_GCC (ignored, "-Wnon-virtual-dtor")
 
 pw::async2::PW_MODIFY_DIAGNOSTICS_POP ()
 
pw::sync::InterruptSpinLockpw::async2::impl::dispatcher_lock ()
 

Function Documentation

◆ dispatcher_lock()

pw::sync::InterruptSpinLock & pw::async2::impl::dispatcher_lock ( )
inline

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.