Corium 1.1.0
High-Performance Zero-Heap C++20 MPSC Application Runtime
Loading...
Searching...
No Matches
WhenAny.hpp File Reference

Non-blocking combinator resolving on the first completed task. More...

#include <cstddef>
#include <type_traits>
#include <utility>
#include <variant>
#include "corium/async/Task.hpp"
+ Include dependency graph for WhenAny.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  corium::async::WhenAnyResult< ResultTypes >
 Result container for whenAny combinator. More...
 
struct  corium::async::detail::WrapVoid< T >
 
struct  corium::async::detail::WrapVoid< void >
 

Namespaces

namespace  corium
 
namespace  corium::async
 
namespace  corium::async::detail
 

Typedefs

template<typename T >
using corium::async::detail::wrap_void_t = typename WrapVoid< T >::type
 

Functions

template<size_t Index, typename TaskType , typename ResultVariant >
bool corium::async::detail::checkTaskDone (TaskType &task, size_t &winnerIndex, ResultVariant &resultVariant)
 
template<size_t Index, typename TaskType >
void corium::async::detail::resumeTask (TaskType &task)
 
template<typename... Tasks>
auto corium::async::whenAny (Tasks &&... tasks)
 Awaits the first task among multiple tasks to complete.
 
template<typename... Tasks, size_t... Is>
Task< WhenAnyResult< typename std::decay_t< Tasks >::ValueType... > > corium::async::detail::whenAnyImpl (std::index_sequence< Is... >, Tasks... tasks)
 

Detailed Description

Non-blocking combinator resolving on the first completed task.