Grappa  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Grappa::delegate Namespace Reference

Classes

class  FetchAddCombiner
 Flat combines fetch_and_add to a single global address. More...
 
class  Promise
 A 'Promise' is a wrapper around a FullEmpty for async delegates with return values. More...
 

Functions

template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename F = decltype(nullptr)>
auto call (Core dest, F f) -> AUTO_INVOKE((impl::Specializer< S, C, F >::call(dest, f,&F::operator())))
 
template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename T = decltype(nullptr), typename F = decltype(nullptr)>
auto call (GlobalAddress< T > t, F func) -> AUTO_INVOKE((impl::call< S, C >(t, func,&F::operator())))
 Helper that makes it easier to implement custom delegate operations specifically on global addresses. More...
 
template<typename M , typename F >
auto call (Core dest, M mutex, F func) -> decltype(func(mutex()))
 Try lock on remote mutex. More...
 
template<typename F >
auto call_suspendable (Core dest, F func) -> decltype(func())
 Alternative version of delegate::call that spawns a privateTask to allow the delegate to perform suspending actions. More...
 
template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename T = decltype(nullptr)>
read (GlobalAddress< T > target)
 Read the value (potentially remote) at the given GlobalAddress, blocks the calling task until round-trip communication is complete. More...
 
template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename T = decltype(nullptr), typename U = decltype(nullptr)>
void write (GlobalAddress< T > target, U value)
 Blocking remote write. More...
 
template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename T = decltype(nullptr), typename U = decltype(nullptr)>
fetch_and_add (GlobalAddress< T > target, U inc)
 Fetch the value at target, increment the value stored there with inc and return the original value to blocking thread. More...
 
template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename T = decltype(nullptr), typename U = decltype(nullptr), typename V = decltype(nullptr)>
bool compare_and_swap (GlobalAddress< T > target, U cmp_val, V new_val)
 If value at target equals cmp_val, set the value to new_val and return true, otherwise do nothing and return false. More...
 
template<SyncMode S = SyncMode::Blocking, GlobalCompletionEvent * C = &impl::local_gce, typename T = decltype(nullptr), typename U = decltype(nullptr)>
void increment (GlobalAddress< T > target, U inc)