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... | |
R | 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 |
Handle for receiving multiple results.
R | Result type. |
|
final |
Waits for the n-th result to be received.
Blocks until valid(const size_type) const returns true
.
|
finalvirtual |
Waits for all the results to be received.
Blocks until valid() const returns true
.
Implements stapl::runtime::futures_base< 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
.
|
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.
get()
.
|
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.
Implements stapl::runtime::futures_base< 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.
n | Result index. |
p | Pointer to the stapl::runtime::arg_storage in the buffer. |
base | Address in the buffer that the stapl::runtime::arg_storage is stored in. |
m | Buffer that contains the stapl::runtime::arg_storage. |
void stapl::runtime::values_handle< R >::set_value | ( | const size_type | n, |
R const & | value | ||
) |
Sets the n
th result.
n | Result index. |
value | Value to be set. |
void stapl::runtime::values_handle< R >::set_value | ( | const size_type | n, |
R && | value | ||
) |
Sets the n
th result.
n | Result index. |
value | Value to be set. |