Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
corium::async::AsyncEvent< T > Class Template Reference

Lock-free single-waiter asynchronous event channel for C++20 coroutines. Enables event-driven coroutine resumption without blocking threads or allocating dynamic memory. More...

#include <AsyncEvent.hpp>

+ Collaboration diagram for corium::async::AsyncEvent< T >:

Classes

struct  Awaiter
 

Public Types

using ValueType = T
 

Public Member Functions

constexpr AsyncEvent ()=default
 
template<typename U >
requires (std::is_convertible_v<U, T>)
void emit (U &&value)
 Emit event value and resume waiting coroutine.
 
bool isReady () const noexcept
 Check if event has been signaled.
 
Awaiter operator co_await () noexcept
 Direct co_await support on AsyncEvent instance.
 
void reset () noexcept
 Reset event to unsignaled state.
 
Awaiter wait () noexcept
 Awaiter factory for co_await syntax.
 

Detailed Description

template<typename T = void>
class corium::async::AsyncEvent< T >

Lock-free single-waiter asynchronous event channel for C++20 coroutines. Enables event-driven coroutine resumption without blocking threads or allocating dynamic memory.

Template Parameters
TPayload type transferred when event is signaled (defaults to void).

Member Typedef Documentation

◆ ValueType

template<typename T = void>
using corium::async::AsyncEvent< T >::ValueType = T

Constructor & Destructor Documentation

◆ AsyncEvent()

template<typename T = void>
constexpr corium::async::AsyncEvent< T >::AsyncEvent ( )
constexprdefault

Member Function Documentation

◆ emit()

template<typename T = void>
template<typename U >
requires (std::is_convertible_v<U, T>)
void corium::async::AsyncEvent< T >::emit ( U &&  value)
inline

Emit event value and resume waiting coroutine.

◆ isReady()

template<typename T = void>
bool corium::async::AsyncEvent< T >::isReady ( ) const
inlinenoexcept

Check if event has been signaled.

+ Here is the caller graph for this function:

◆ operator co_await()

template<typename T = void>
Awaiter corium::async::AsyncEvent< T >::operator co_await ( )
inlinenoexcept

Direct co_await support on AsyncEvent instance.

◆ reset()

template<typename T = void>
void corium::async::AsyncEvent< T >::reset ( )
inlinenoexcept

Reset event to unsignaled state.

◆ wait()

template<typename T = void>
Awaiter corium::async::AsyncEvent< T >::wait ( )
inlinenoexcept

Awaiter factory for co_await syntax.


The documentation for this class was generated from the following file: