Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
C++20 Coroutines & Channels

Lightweight non-blocking async tasks, channels, and synchronization primitives with zero-heap resumption chaining. More...

Files

file  async.hpp
 Umbrella header for C++20 coroutine primitives.
 
file  AsyncEvent.hpp
 Lock-free asynchronous event synchronization primitive for C++20 coroutines.
 
file  CancellationToken.hpp
 Lock-free atomic cooperative cancellation token with coroutine awaiter.
 
file  Channel.hpp
 Zero-heap bounded asynchronous channel for C++20 coroutine message passing.
 
file  Delay.hpp
 Non-blocking timer delay and yield awaitables for C++20 coroutines.
 
file  FramePool.hpp
 Zero-heap static coroutine frame pool and frame allocator policies.
 
file  Generator.hpp
 Pull-based zero-heap lazy sequence generator compatible with C++20 ranges.
 
file  Semaphore.hpp
 Zero-heap asynchronous counting semaphore for C++20 coroutines.
 
file  Task.hpp
 Lazy awaitable C++20 coroutine task with zero dynamic heap allocation.
 
file  WhenAll.hpp
 Non-blocking combinator awaiting completion of multiple parallel tasks.
 
file  WhenAny.hpp
 Non-blocking combinator resolving on the first completed task.
 

Classes

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. More...
 
class  corium::async::AsyncSemaphore
 Asynchronous counting semaphore for cooperative coroutine concurrency throttling. More...
 
class  corium::async::CancellationToken
 Lightweight, zero-heap cooperative cancellation token for C++20 coroutines and services. More...
 
class  corium::async::Channel< T, Capacity >
 Statically allocated bounded asynchronous channel for typed producer-consumer coroutines. More...
 
class  corium::async::Generator< T, Allocator >
 Zero-heap C++20 pull-based lazy generator sequence with configurable frame allocator. Compatible with range-based for loops and standard C++20 ranges. More...
 
class  corium::async::StaticFramePool< MaxFrames, FrameSize >
 Statically-allocated fixed-capacity memory pool for coroutine state frames. Eliminates heap allocations and guarantees deterministic O(1) coroutine frame allocation. More...
 
class  corium::async::Task< T, Allocator >
 Lightweight C++20 coroutine task with zero-heap resumption chaining and configurable frame allocator. More...
 

Functions

template<typename... Tasks>
auto corium::async::whenAll (Tasks &&... tasks)
 Awaits concurrent or sequential completion of multiple Task coroutines.
 
template<typename... Tasks>
auto corium::async::whenAny (Tasks &&... tasks)
 Awaits the first task among multiple tasks to complete.
 

Detailed Description

Lightweight non-blocking async tasks, channels, and synchronization primitives with zero-heap resumption chaining.

Key components:

Function Documentation

◆ whenAll()

template<typename... Tasks>
auto corium::async::whenAll ( Tasks &&...  tasks)

Awaits concurrent or sequential completion of multiple Task coroutines.

Returns
Task containing std::tuple of results, or Task<void> if all input tasks are void.
+ Here is the call graph for this function:

◆ whenAny()

template<typename... Tasks>
auto corium::async::whenAny ( Tasks &&...  tasks)

Awaits the first task among multiple tasks to complete.

Returns
Task containing WhenAnyResult with index and variant result.
+ Here is the call graph for this function: