hpx/executors/limiting_executor.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace execution
namespace experimental

Typedefs

using print_on = hpx::debug::enable_print<false>

Functions

static constexpr print_on hpx::execution::experimental::lim_debug("LIMEXEC")
template<typename BaseExecutor>
struct limiting_executor

Public Types

template<>
using execution_category = typename BaseExecutor::execution_category
template<>
using executor_parameters_type = typename BaseExecutor::executor_parameters_type

Public Functions

limiting_executor(BaseExecutor &ex, std::size_t lower, std::size_t upper, bool block_on_destruction = true)
limiting_executor(std::size_t lower, std::size_t upper, bool block_on_destruction = true)
~limiting_executor()
limiting_executor const &context() const
template<typename F, typename ...Ts>
decltype(auto) sync_execute(F &&f, Ts&&... ts) const
template<typename F, typename ...Ts>
decltype(auto) async_execute(F &&f, Ts&&... ts)
template<typename F, typename Future, typename ...Ts>
decltype(auto) then_execute(F &&f, Future &&predecessor, Ts&&... ts)
template<typename F, typename ...Ts>
void post(F &&f, Ts&&... ts)
template<typename F, typename S, typename ...Ts>
decltype(auto) bulk_async_execute(F &&f, S const &shape, Ts&&... ts)
template<typename F, typename S, typename Future, typename ...Ts>
decltype(auto) bulk_then_execute(F &&f, S const &shape, Future &&predecessor, Ts&&... ts)
void wait()
void wait_all()
void set_threshold(std::size_t lower, std::size_t upper)

Private Functions

void count_up()
void count_down() const
void set_and_wait(std::size_t lower, std::size_t upper)

Private Members

BaseExecutor executor_
std::atomic<std::size_t> count_
std::size_t lower_threshold_
std::size_t upper_threshold_
bool block_
struct on_exit

Public Functions

template<>
on_exit(limiting_executor const &this_e)
template<>
~on_exit()

Public Members

template<>
limiting_executor const &executor_
template<typename F, typename B = BaseExecutor, typename Enable = void>
struct throttling_wrapper

Public Functions

template<>
throttling_wrapper(limiting_executor &lim, BaseExecutor const&, F &&f)
template<typename ...Ts>
decltype(auto) operator()(Ts&&... ts)
template<>
bool exceeds_upper()
template<>
bool exceeds_lower()

Public Members

template<>
limiting_executor &limiting_
template<>
F f_