Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

execution::bulk_execute
PrevUpHomeNext

A customisation point that creates a bulk sender.

constexpr unspecified bulk_execute = unspecified;

The name execution::bulk_execute denotes a customisation point object. If is_convertible_v<N, size_t> is true, then the expression execution::bulk_execute(S, F, N) for some subexpressions S, F, and N is expression-equivalent to:

  • S.bulk_execute(F, N), if that expression is valid. If the function selected does not execute N invocations of the function object F on the executor S in bulk with forward progress guarantee boost::asio::query(S, execution::bulk_guarantee), and the result of that function does not model sender<void>, the program is ill-formed with no diagnostic required.
  • Otherwise, bulk_execute(S, F, N), if that expression is valid, with overload resolution performed in a context that includes the declaration void bulk_execute(); and that does not include a declaration of execution::bulk_execute. If the function selected by overload resolution does not execute N invocations of the function object F on the executor S in bulk with forward progress guarantee boost::asio::query(E, execution::bulk_guarantee), and the result of that function does not model sender<void>, the program is ill-formed with no diagnostic required.
  • Otherwise, if the types F and executor_index_t<remove_cvref_t<S>> model invocable and if boost::asio::query(S, execution::bulk_guarantee) equals execution::bulk_guarantee.unsequenced, then
  • Evaluates DECAY_COPY(std::forward<decltype(F)>(F)) on the calling thread to create a function object cf. [Note: Additional copies of cf may subsequently be created. --end note.]
  • For each value of i in N, cf(i) (or copy of cf)) will be invoked at most once by an execution agent that is unique for each value of i.
  • May block pending completion of one or more invocations of cf.
  • Synchronizes with (C++Std [intro.multithread]) the invocations of cf.
  • Otherwise, execution::bulk_execute(S, F, N) is ill-formed.
Requirements

Header: boost/asio/execution/bulk_execute.hpp

Convenience header: boost/asio/execution.hpp


PrevUpHomeNext