QuantumLibrary
Bloomberg::quantum::FutureJoiner< T > Class Template Reference

Utility class that joins N futures into a single one. More...

#include <quantum_future_joiner.h>

Public Member Functions

template<class DISPATCHER , class = std::enable_if_t<std::is_same<typename DISPATCHER::ContextTag,ThreadContextTag>::value>>
ThreadFuturePtr< std::vector< T > > operator() (DISPATCHER &dispatcher, std::vector< ThreadContextPtr< T >> &&futures)
 Join N thread futures. More...
 
template<class DISPATCHER , class = std::enable_if_t<std::is_same<typename DISPATCHER::ContextTag,ThreadContextTag>::value>>
ThreadFuturePtr< std::vector< T > > operator() (DISPATCHER &dispatcher, std::vector< ThreadFuturePtr< T >> &&futures)
 
template<class DISPATCHER , class = std::enable_if_t<std::is_same<typename DISPATCHER::ContextTag,CoroContextTag>::value>>
CoroContextPtr< std::vector< T > > operator() (DISPATCHER &dispatcher, std::vector< CoroContextPtr< T >> &&futures)
 
template<class DISPATCHER , class = std::enable_if_t<std::is_same<typename DISPATCHER::ContextTag,CoroContextTag>::value>>
CoroContextPtr< std::vector< T > > operator() (DISPATCHER &dispatcher, std::vector< CoroFuturePtr< T >> &&futures)
 

Detailed Description

template<typename T>
class Bloomberg::quantum::FutureJoiner< T >

Utility class that joins N futures into a single one.

Instead of waiting for N futures to complete, the user can join them and wait on a single future which returns N values.

Template Parameters
TThe type returned by the future.

Member Function Documentation

◆ operator()() [1/4]

template<typename T >
template<class DISPATCHER , class >
ThreadFuturePtr< std::vector< T > > Bloomberg::quantum::FutureJoiner< T >::operator() ( DISPATCHER &  dispatcher,
std::vector< ThreadContextPtr< T >> &&  futures 
)

Join N thread futures.

Parameters
[in]futuresA vector of thread futures of type T.
Returns
A joined future to wait on.

◆ operator()() [2/4]

template<typename T >
template<class DISPATCHER , class >
ThreadFuturePtr< std::vector< T > > Bloomberg::quantum::FutureJoiner< T >::operator() ( DISPATCHER &  dispatcher,
std::vector< ThreadFuturePtr< T >> &&  futures 
)

◆ operator()() [3/4]

template<typename T >
template<class DISPATCHER , class >
CoroContextPtr< std::vector< T > > Bloomberg::quantum::FutureJoiner< T >::operator() ( DISPATCHER &  dispatcher,
std::vector< CoroContextPtr< T >> &&  futures 
)

◆ operator()() [4/4]

template<typename T >
template<class DISPATCHER , class >
CoroContextPtr< std::vector< T > > Bloomberg::quantum::FutureJoiner< T >::operator() ( DISPATCHER &  dispatcher,
std::vector< CoroFuturePtr< T >> &&  futures 
)