lcos_local¶
The contents of this module can be included with the header
hpx/modules/lcos_local.hpp
. These headers may be used by user-code but are not
guaranteed stable (neither header location nor contents). You are using these at
your own risk. If you wish to use non-public functionality from a module we
strongly suggest only including the module header hpx/modules/lcos_local.hpp
, not
the particular header in which the functionality you would like to use is
defined. See Public API for a list of names that are part of the public
HPX API.
-
namespace
hpx
-
namespace
lcos
-
namespace
local
-
struct
and_gate
: public hpx::lcos::local::base_and_gate<no_mutex>¶ Public Functions
-
template<typename
Lock
>
future<void>get_future
(Lock &l, std::size_t count = std::size_t(-1), std::size_t *generation_value = nullptr, error_code &ec = hpx::throws)¶
-
template<typename
Lock
>
boolset
(std::size_t which, Lock l, error_code &ec = throws)¶
-
template<typename
Lock
>
voidsynchronize
(std::size_t generation_value, Lock &l, char const *function_name = "and_gate::synchronize", error_code &ec = throws)¶
-
template<typename
-
template<typename
Mutex
= lcos::local::spinlock>
structbase_and_gate
¶ Public Functions
-
base_and_gate
(std::size_t count = 0)¶ This constructor initializes the base_and_gate object from the the number of participants to synchronize the control flow with.
-
base_and_gate
(base_and_gate &&rhs)¶
-
base_and_gate &
operator=
(base_and_gate &&rhs)¶
-
future<void>
get_future
(std::size_t count = std::size_t(-1), std::size_t *generation_value = nullptr, error_code &ec = hpx::throws)¶
-
bool
set
(std::size_t which, error_code &ec = throws)¶
-
void
synchronize
(std::size_t generation_value, char const *function_name = "base_and_gate<>::synchronize", error_code &ec = throws)¶ Wait for the generational counter to reach the requested stage.
Protected Types
-
typedef Mutex
mutex_type
¶
Protected Functions
-
bool
trigger_conditions
(error_code &ec = throws)¶
-
template<typename
OuterLock
>
future<void>get_future
(OuterLock &outer_lock, std::size_t count = std::size_t(-1), std::size_t *generation_value = nullptr, error_code &ec = hpx::throws)¶ get a future allowing to wait for the gate to fire
get a shared future allowing to wait for the gate to fire
-
template<typename
OuterLock
>
boolset
(std::size_t which, OuterLock outer_lock, error_code &ec = throws)¶ Set the data which has to go into the segment which.
-
template<typename
Lock
>
voidsynchronize
(std::size_t generation_value, Lock &l, char const *function_name = "base_and_gate<>::synchronize", error_code &ec = throws)¶
Private Types
-
typedef std::list<conditional_trigger*>
condition_list_type
¶
-
struct
manage_condition
¶ Public Functions
-
template<>
manage_condition
(base_and_gate &gate, conditional_trigger &cond)¶
-
template<>
~manage_condition
()¶
-
template<typename
Condition
>
future<void>get_future
(Condition &&func, error_code &ec = hpx::throws)¶
-
template<>
-
-
struct
-
namespace
-
namespace
-
namespace
hpx
-
namespace
lcos
-
namespace
local
-
template<typename
T
>
classchannel
¶ Public Types
-
template<>
usingvalue_type
= T¶
Public Functions
-
channel
()¶
Private Types
-
template<>
usingbase_type
= detail::channel_base<T>¶
Friends
-
friend
hpx::lcos::local::channel_iterator< T >
-
friend
hpx::lcos::local::receive_channel< T >
-
friend
hpx::lcos::local::send_channel< T >
-
template<>
-
template<>
classchannel
<void> : protected hpx::lcos::local::detail::channel_base<void>¶ Public Types
-
template<>
usingvalue_type
= void¶
Public Functions
-
channel
()
Private Types
-
template<>
usingbase_type
= detail::channel_base<void>¶
Friends
-
friend
hpx::lcos::local::channel_iterator< void >
-
friend
hpx::lcos::local::receive_channel< void >
-
friend
hpx::lcos::local::send_channel< void >
-
template<>
-
template<typename
T
>
classchannel_async_iterator
: public hpx::util::iterator_facade<channel_async_iterator<T>, hpx::future<T>, std::input_iterator_tag, hpx::future<T>>¶ Public Functions
-
channel_async_iterator
()¶
-
channel_async_iterator
(detail::channel_base<T> const *c)¶
Private Types
Private Functions
-
bool
equal
(channel_async_iterator const &rhs) const¶
-
void
increment
()¶
-
base_type::reference
dereference
() const¶
Private Members
Friends
-
friend
hpx::lcos::local::hpx::util::iterator_core_access
-
-
template<typename
T
>
classchannel_iterator
: public hpx::util::iterator_facade<channel_iterator<T>, T const, std::input_iterator_tag>¶ Public Functions
-
channel_iterator
()¶
-
channel_iterator
(detail::channel_base<T> const *c)¶
-
channel_iterator
(receive_channel<T> const *c)¶
Private Types
Private Functions
-
bool
equal
(channel_iterator const &rhs) const¶
-
void
increment
()¶
-
base_type::reference
dereference
() const¶
Private Members
Friends
-
friend
hpx::lcos::local::hpx::util::iterator_core_access
-
-
template<>
classchannel_iterator
<void> : public hpx::util::iterator_facade<channel_iterator<void>, util::unused_type const, std::input_iterator_tag>¶ Public Functions
-
channel_iterator
()
-
channel_iterator
(detail::channel_base<void> const *c)¶
-
channel_iterator
(receive_channel<void> const *c)¶
Private Types
-
template<>
usingbase_type
= hpx::util::iterator_facade<channel_iterator<void>, util::unused_type const, std::input_iterator_tag>¶
Private Functions
-
bool
get_checked
()¶
-
bool
equal
(channel_iterator const &rhs) const
-
void
increment
()
-
base_type::reference
dereference
() const
Private Members
-
hpx::intrusive_ptr<detail::channel_impl_base<util::unused_type>>
channel_
-
bool
data_
Friends
-
friend
hpx::lcos::local::hpx::util::iterator_core_access
-
-
template<typename
T
>
classone_element_channel
¶ Public Types
-
template<>
usingvalue_type
= T¶
Public Functions
-
one_element_channel
()¶
Private Types
-
template<>
usingbase_type
= detail::channel_base<T>¶
Friends
-
friend
hpx::lcos::local::channel_iterator< T >
-
friend
hpx::lcos::local::receive_channel< T >
-
friend
hpx::lcos::local::send_channel< T >
-
template<>
-
template<>
classone_element_channel
<void> : protected hpx::lcos::local::detail::channel_base<void>¶ Public Types
-
template<>
usingvalue_type
= void¶
Public Functions
-
one_element_channel
()
Private Types
-
template<>
usingbase_type
= detail::channel_base<void>¶
Friends
-
friend
hpx::lcos::local::channel_iterator< void >
-
friend
hpx::lcos::local::receive_channel< void >
-
friend
hpx::lcos::local::send_channel< void >
-
template<>
-
template<typename
T
>
classreceive_channel
¶ Public Functions
-
receive_channel
(channel<T> const &c)¶
-
receive_channel
(one_element_channel<T> const &c)¶
Private Types
-
template<>
usingbase_type
= detail::channel_base<T>¶
Friends
-
friend
hpx::lcos::local::channel_iterator< T >
-
friend
hpx::lcos::local::send_channel< T >
-
-
template<>
classreceive_channel
<void> : protected hpx::lcos::local::detail::channel_base<void>¶ Public Functions
-
receive_channel
(one_element_channel<void> const &c)¶
Private Types
-
template<>
usingbase_type
= detail::channel_base<void>¶
Friends
-
friend
hpx::lcos::local::channel_iterator< void >
-
friend
hpx::lcos::local::send_channel< void >
-
-
template<typename
-
namespace
-
namespace
-
namespace
hpx
-
namespace
lcos
-
namespace
local
Functions
-
void
run_guarded
(guard &guard, detail::guard_function task)¶ Conceptually, a guard acts like a mutex on an asynchronous task. The mutex is locked before the task runs, and unlocked afterwards.
-
void
-
namespace
-
namespace
-
namespace
hpx
-
namespace
lcos
-
namespace
local
-
struct
conditional_trigger
¶ Public Functions
-
conditional_trigger
()¶
-
conditional_trigger
(conditional_trigger &&rhs)¶
-
conditional_trigger &
operator=
(conditional_trigger &&rhs)¶
-
template<typename
Condition
>
future<void>get_future
(Condition &&func, error_code &ec = hpx::throws)¶ get a future allowing to wait for the trigger to fire
-
void
reset
()¶
-
bool
set
(error_code &ec = throws)¶ Trigger this object.
-
-
struct
-
namespace
-
namespace
-
namespace
hpx
-
namespace
lcos
-
namespace
local
-
template<typename
R
, typename ...Ts
>
classpackaged_task
<R(Ts...)>¶ Public Functions
-
packaged_task
()¶
-
template<typename
F
, typenameFD
= std::decay_t<F>, typenameEnable
= std::enable_if_t<!std::is_same<FD, packaged_task>::value && is_invocable_r_v<R, FD&, Ts...>>>packaged_task
(F &&f)¶
-
template<typename
Allocator
, typenameF
, typenameFD
= std::decay_t<F>, typenameEnable
= std::enable_if_t<!std::is_same<FD, packaged_task>::value && is_invocable_r_v<R, FD&, Ts...>>>packaged_task
(std::allocator_arg_t, Allocator const &a, F &&f)¶
-
packaged_task
(packaged_task &&rhs)¶
-
packaged_task &
operator=
(packaged_task &&rhs)¶
-
void
swap
(packaged_task &rhs)¶
-
void
operator()
(Ts... vs)¶
-
lcos::future<R>
get_future
(error_code &ec = throws)¶
-
bool
valid
() const¶
-
void
reset
(error_code &ec = throws)¶
Private Types
-
template<>
usingfunction_type
= util::unique_function_nonser<R(Ts...)>¶
Private Functions
-
-
template<typename
-
namespace
-
namespace
-
namespace
hpx
-
namespace
lcos
-
namespace
local
-
template<typename
T
, typenameMutex
= lcos::local::spinlock>
structreceive_buffer
¶ Public Functions
-
receive_buffer
()¶
-
receive_buffer
(receive_buffer &&other)¶
-
~receive_buffer
()¶
-
receive_buffer &
operator=
(receive_buffer &&other)¶
-
template<typename
Lock
= hpx::lcos::local::no_mutex>
voidstore_received
(std::size_t step, T &&val, Lock *lock = nullptr)¶
-
bool
empty
() const¶
Protected Types
-
typedef Mutex
mutex_type
¶
-
typedef std::map<std::size_t, std::shared_ptr<entry_data>>
buffer_map_type
¶
-
typedef buffer_map_type::iterator
iterator
¶
-
struct
entry_data
¶
-
-
template<typename
Mutex
>
structreceive_buffer
<void, Mutex>¶ Public Functions
-
receive_buffer
()
-
receive_buffer
(receive_buffer &&other)
-
~receive_buffer
()
-
receive_buffer &
operator=
(receive_buffer &&other)
-
template<typename
Lock
= hpx::lcos::local::no_mutex>
voidstore_received
(std::size_t step, Lock *lock = nullptr)¶
-
bool
empty
() const
Protected Types
-
typedef Mutex
mutex_type
-
typedef std::map<std::size_t, std::shared_ptr<entry_data>>
buffer_map_type
-
typedef buffer_map_type::iterator
iterator
-
template<>
structentry_data
¶ Public Functions
-
template<>
HPX_NON_COPYABLE
(entry_data)¶
-
template<>
entry_data
()¶
-
template<>
voidset_value
()¶
-
template<>
-
-
template<typename
-
namespace
-
namespace
-
namespace
hpx
-
namespace
lcos
-
namespace
local
-
template<typename
Mutex
= lcos::local::spinlock>
structbase_trigger
¶ Public Functions
-
base_trigger
()¶
-
base_trigger
(base_trigger &&rhs)¶
-
base_trigger &
operator=
(base_trigger &&rhs)¶
-
future<void>
get_future
(std::size_t *generation_value = nullptr, error_code &ec = hpx::throws)¶ get a future allowing to wait for the trigger to fire
-
bool
set
(error_code &ec = throws)¶ Trigger this object.
-
void
synchronize
(std::size_t generation_value, char const *function_name = "trigger::synchronize", error_code &ec = throws)¶ Wait for the generational counter to reach the requested stage.
Protected Types
-
typedef Mutex
mutex_type
¶
Protected Functions
-
bool
trigger_conditions
(error_code &ec = throws)¶
-
template<typename
Lock
>
voidsynchronize
(std::size_t generation_value, Lock &l, char const *function_name = "trigger::synchronize", error_code &ec = throws)¶
Private Types
-
typedef std::list<conditional_trigger*>
condition_list_type
¶
-
struct
manage_condition
¶ Public Functions
-
template<>
manage_condition
(base_trigger &gate, conditional_trigger &cond)¶
-
template<>
~manage_condition
()¶
-
template<typename
Condition
>
future<void>get_future
(Condition &&func, error_code &ec = hpx::throws)¶
-
template<>
-
-
template<typename
-
namespace
-
namespace