STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
List of all members | Public Member Functions | Public Types | Protected Member Functions | Protected Attributes
stapl::runtime::values_handle< R > Class Template Referenceabstract

Handle for receiving multiple results. More...

Public Member Functions

 values_handle (const size_type n) noexcept
 
size_type size (void) const noexcept final
 
bool valid (const size_type n) const final
 Returns true if the n-th result has been received.
 
bool valid (void) const final
 Returns true if all the results have been received.
 
void wait (const size_type n) const final
 Waits for the n-th result to be received. More...
 
void wait (void) const final
 Waits for all the results to be received. More...
 
void wait (context &ctx) const
 Waits for the n-th result to be received. More...
 
get (const size_type n) final
 Returns the n-th received result. More...
 
std::vector< R > get (void) final
 Returns all the received results. More...
 
void set_value (const size_type n, storage_type *const p, void *const base, message_shared_ptr &m)
 Sets the n-th result. More...
 
void set_value (const size_type n, R const &value)
 Sets the n th result. More...
 
void set_value (const size_type n, R &&value)
 Sets the n th result. More...
 
void set_owned (void) noexcept
 
bool is_owned (void) const noexcept
 
virtual R get (const size_type)=0
 
virtual bool valid (const size_type) const=0
 
virtual void wait (const size_type) const=0
 
void async_then (Function &&f)
 

Public Types

typedef futures_base< R >::size_type size_type
 
typedef internal_storage_type::storage_type storage_type
 
using value_type = R
 
using aggregate_result_type = typename std::conditional< std::is_void< R >::value, void, std::vector< R > >::type
 

Protected Member Functions

bool valid_no_yield (void) const noexcept final
 Returns true if the result has been received.
 
void schedule_continuation (void)
 Schedules a continuation if async_then() was called.
 

Protected Attributes

std::mutex m_mtx
 

Detailed Description

template<typename R>
class stapl::runtime::values_handle< R >

Handle for receiving multiple results.

Template Parameters
RResult type.
See also
async_results, futures, futures_base

Member Function Documentation

◆ wait() [1/3]

template<typename R>
void stapl::runtime::values_handle< R >::wait ( const size_type  n) const
final

Waits for the n-th result to be received.

Blocks until valid(const size_type) const returns true.

◆ wait() [2/3]

template<typename R>
void stapl::runtime::values_handle< R >::wait ( void  ) const
finalvirtual

Waits for all the results to be received.

Blocks until valid() const returns true.

Implements stapl::runtime::futures_base< R >.

◆ wait() [3/3]

template<typename R>
void stapl::runtime::values_handle< R >::wait ( context ctx) const

Waits for the n-th result to be received.

Blocks until valid(const size_type) const returns true.

◆ get() [1/2]

template<typename R>
R stapl::runtime::values_handle< R >::get ( const size_type  n)
final

Returns the n-th received result.

This function waits until the n-th result has been received and returns it.

Calling valid() const or valid(const size_type) const returns false after a call to this function.

The lock ensures that set_value() has finished before the get() continues, to avoid calling schedule_continuation() on an object that has been destroyed.

Warning
You cannot mix calls of this function and get().

◆ get() [2/2]

template<typename R>
std::vector<R> stapl::runtime::values_handle< R >::get ( void  )
finalvirtual

Returns all the received results.

This function waits until all results have been received and returns them.

Calling valid() const or valid(const size_type) const returns false after a call to this function.

The lock ensures that set_value() has finished before the get() continues, to avoid calling schedule_continuation() on an object that has been destroyed.

Warning
You cannot mix calls of this function and get(size_type).

Implements stapl::runtime::futures_base< R >.

◆ set_value() [1/3]

template<typename R>
void stapl::runtime::values_handle< R >::set_value ( const size_type  n,
storage_type *const  p,
void *const  base,
message_shared_ptr m 
)

Sets the n-th result.

This function keeps a pointer to the buffer where the result remains packed until get() or get(const size_type) are called.

Parameters
nResult index.
pPointer to the stapl::runtime::arg_storage in the buffer.
baseAddress in the buffer that the stapl::runtime::arg_storage is stored in.
mBuffer that contains the stapl::runtime::arg_storage.
See also
arg_storage, message

◆ set_value() [2/3]

template<typename R>
void stapl::runtime::values_handle< R >::set_value ( const size_type  n,
R const &  value 
)

Sets the n th result.

Parameters
nResult index.
valueValue to be set.

◆ set_value() [3/3]

template<typename R>
void stapl::runtime::values_handle< R >::set_value ( const size_type  n,
R &&  value 
)

Sets the n th result.

Parameters
nResult index.
valueValue to be set.

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