coroutines¶
The contents of this module can be included with the header
hpx/modules/coroutines.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/coroutines.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.
Header hpx/coroutines/coroutine.hpp
¶
-
namespace
hpx
-
namespace
threads
-
namespace
coroutines
¶ -
class
coroutine
¶ - #include <coroutine.hpp>
Public Types
-
using
impl_type
= detail::coroutine_impl¶
-
using
functor_type
= util::unique_function_nonser<result_type(arg_type)>¶
Public Functions
-
coroutine
(functor_type &&f, thread_id_type id, std::ptrdiff_t stack_size = detail::default_stack_size)¶
-
thread_id_type
get_thread_id
() const¶
-
void
rebind
(functor_type &&f, thread_id_type id)¶
-
result_type
operator()
(arg_type arg = arg_type())¶
-
bool
is_ready
() const¶
-
using
-
class
-
namespace
-
namespace
Header hpx/coroutines/coroutine_fwd.hpp
¶
Header hpx/coroutines/stackless_coroutine.hpp
¶
-
namespace
hpx
-
namespace
threads
-
namespace
coroutines
-
class
stackless_coroutine
¶ - #include <stackless_coroutine.hpp>
Public Types
-
using
result_type
= std::pair<thread_state_enum, thread_id_type>¶
-
using
arg_type
= thread_state_ex_enum¶
-
using
functor_type
= util::unique_function_nonser<result_type(arg_type)>¶
Public Functions
-
stackless_coroutine
(functor_type &&f, thread_id_type id, std::ptrdiff_t = default_stack_size)¶
-
~stackless_coroutine
()¶
-
stackless_coroutine
(stackless_coroutine const &src)¶
-
stackless_coroutine &
operator=
(stackless_coroutine const &src)¶
-
stackless_coroutine
(stackless_coroutine &&src)¶
-
stackless_coroutine &
operator=
(stackless_coroutine &&src)¶
-
thread_id_type
get_thread_id
() const¶
-
void
rebind
(functor_type &&f, thread_id_type id)¶
-
void
reset_tss
()¶
-
void
reset
()¶
-
stackless_coroutine::result_type
operator()
(arg_type arg = arg_type())¶
-
operator bool
() const¶
-
bool
is_ready
() const¶
Friends
-
friend
hpx::threads::coroutines::reset_on_exit
-
struct
reset_on_exit
¶ -
Public Members
-
stackless_coroutine &
this_
¶
-
stackless_coroutine &
-
using
-
class
-
namespace
-
namespace
Header hpx/coroutines/thread_enums.hpp
¶
-
namespace
hpx
-
namespace
threads
Enums
-
enum
thread_state_enum
¶ The thread_state_enum enumerator encodes the current state of a thread instance
Values:
-
unknown
= 0¶
-
active
= 1¶ thread is currently active (running, has resources)
-
pending
= 2¶ thread is pending (ready to run, but no hardware resource available)
-
suspended
= 3¶ thread has been suspended (waiting for synchronization event, but still known and under control of the thread-manager)
-
depleted
= 4¶ thread has been depleted (deeply suspended, it is not known to the thread-manager)
-
terminated
= 5¶ thread has been stopped an may be garbage collected
-
staged
= 6¶ this is not a real thread state, but allows to reference staged task descriptions, which eventually will be converted into thread objects
-
pending_do_not_schedule
= 7¶
-
pending_boost
= 8¶
-
-
enum
thread_priority
¶ This enumeration lists all possible thread-priorities for HPX threads.
Values:
-
thread_priority_unknown
= -1¶
-
thread_priority_default
= 0¶ Will assign the priority of the task to the default (normal) priority.
-
thread_priority_low
= 1¶ Task goes onto a special low priority queue and will not be executed until all high/normal priority tasks are done, even if they are added after the low priority task.
-
thread_priority_normal
= 2¶ Task will be executed when it is taken from the normal priority queue, this is usually a first in-first-out ordering of tasks (depending on scheduler choice). This is the default priority.
-
thread_priority_high_recursive
= 3¶ The task is a high priority task and any child tasks spawned by this task will be made high priority as well - unless they are specifically flagged as non default priority.
-
thread_priority_boost
= 4¶ Same as thread_priority_high except that the thread will fall back to thread_priority_normal if resumed after being suspended.
-
thread_priority_high
= 5¶ Task goes onto a special high priority queue and will be executed before normal/low priority tasks are taken (some schedulers modify the behavior slightly and the documentation for those should be consulted).
-
thread_priority_bound
= 6¶ Task goes onto a special high priority queue and will never be stolen by another thread after initial assignment. This should be used for thread placement tasks such as OpenMP type for loops.
-
-
enum
thread_state_ex_enum
¶ The thread_state_ex_enum enumerator encodes the reason why a thread is being restarted
Values:
-
wait_unknown
= 0¶
-
wait_signaled
= 1¶ The thread has been signaled.
-
wait_timeout
= 2¶ The thread has been reactivated after a timeout
-
wait_terminate
= 3¶ The thread needs to be terminated.
-
wait_abort
= 4¶ The thread needs to be aborted.
-
-
enum
thread_stacksize
¶ A thread_stacksize references any of the possible stack-sizes for HPX threads.
Values:
-
thread_stacksize_unknown
= -1¶
-
thread_stacksize_small
= 1¶ use small stack size
-
thread_stacksize_medium
= 2¶ use medium sized stack size
-
thread_stacksize_large
= 3¶ use large stack size
-
thread_stacksize_huge
= 4¶ use very large stack size
-
thread_stacksize_nostack
= 5¶ this thread does not suspend (does not need a stack)
-
thread_stacksize_current
= 6¶ use size of current thread’s stack
-
thread_stacksize_default
= thread_stacksize_small¶ use default stack size
-
thread_stacksize_minimal
= thread_stacksize_small¶ use minimally stack size
-
thread_stacksize_maximal
= thread_stacksize_huge¶ use maximally stack size
-
Functions
-
char const *
get_thread_state_name
(thread_state_enum state)¶ Returns the name of the given state.
Get the readable string representing the name of the given thread_state constant.
- Parameters
state
: this represents the thread state.
-
char const *
get_thread_priority_name
(thread_priority priority)¶ Return the thread priority name.
Get the readable string representing the name of the given thread_priority constant.
- Parameters
this
: represents the thread priority.
-
char const *
get_thread_state_ex_name
(thread_state_ex_enum state)¶ Get the readable string representing the name of the given thread_state_ex_enum constant.
-
char const *
get_thread_state_name
(thread_state state)¶ Get the readable string representing the name of the given thread_state constant.
-
char const *
get_stack_size_enum_name
(thread_stacksize size)¶ Returns the stack size name.
Get the readable string representing the given stack size constant.
- Parameters
size
: this represents the stack size
-
struct
thread_schedule_hint
¶ - #include <thread_enums.hpp>
Public Functions
-
constexpr
thread_schedule_hint
()¶
-
constexpr
thread_schedule_hint
(thread_schedule_hint_mode mode, std::int16_t hint)¶
-
bool
operator==
(thread_schedule_hint const &rhs) const¶
-
bool
operator!=
(thread_schedule_hint const &rhs) const¶
-
constexpr
-
enum
-
namespace
Header hpx/coroutines/thread_id_type.hpp
¶
-
namespace
hpx
-
namespace
threads
-
-
struct
thread_id
¶ - #include <thread_id_type.hpp>
Public Functions
-
constexpr
thread_id
()¶
-
constexpr
thread_id
(thread_id_repr thrd)¶
-
constexpr
operator bool
() const¶
-
constexpr thread_id_repr
get
() const¶
-
constexpr void
reset
()¶
Private Types
-
using
thread_id_repr
= void*¶
Private Members
-
thread_id_repr
thrd_
¶
Friends
-
constexpr bool
operator==
(thread_id const &lhs, thread_id const &rhs)¶
-
constexpr bool
operator!=
(thread_id const &lhs, thread_id const &rhs)¶
-
constexpr bool
operator<
(thread_id const &lhs, thread_id const &rhs)¶
-
constexpr bool
operator>
(thread_id const &lhs, thread_id const &rhs)¶
-
constexpr bool
operator<=
(thread_id const &lhs, thread_id const &rhs)¶
-
constexpr bool
operator>=
(thread_id const &lhs, thread_id const &rhs)¶
-
constexpr
-
struct
-
namespace