最終更新日時(UTC):
が更新

履歴 編集

function
<execution>

std::execution::task_scheduler::schedule(C++26)

see below schedule();

概要

保持中SchedulerスケジュールSenderを返す。

戻り値

その型がsenderのモデルであり、下記を満たす右辺値ts-sndr

説明専用エンティティ

WARP-RCVR

receiver_proxyから派生した型の左辺値rに対して、WARP-RCVR(r)receiverのモデルであり、その完了ハンドラがrの対応する完了ハンドラを呼び出すような型のオブジェクトとする。

クラステンプレートbackend-for

namespace std::execution {
  template<scheduler Sch>
  class task_scheduler::backend-for
    : public parallel_scheduler_replacement::parallel_scheduler_backend {  // exposition only
  public:
    explicit backend-for(Sch sch) : sched_(std::move(sch)) {}

    void schedule(receiver_proxy& r, span<byte> s) noexcept override;
    void schedule_bulk_chunked(size_t shape, bulk_item_receiver_proxy& r,
                               span<byte> s) noexcept override;
    void schedule_bulk_unchunked(size_t shape, bulk_item_receiver_proxy& r,
                                 span<byte> s) noexcept override;

  private:
    Sch sched_;
  };
}

envを部分式のパックとしたとき、値完了シグネチャset_value_t()のみを持ち式get_completion_scheduler<set_value_t>(get_env(just-sndr-like), env...)get_completion_scheduler<set_value_t>(sched_, env...)と等価な式であるようなSenderjust-sndr-likeとする。

void schedule(receiver_proxy& r, span<byte> s) noexcept override;

void schedule_bulk_chunked(size_t shape, bulk_item_receiver_proxy& r,
                           span<byte> s) noexcept override;

  • 効果 : 説明用のchunk_sizeshape以下の整数、chunk_num(shape + chunk_size - 1) / chunk_sizem(i + 1) * chunk_sizeshapeのうち小さい方として、整数iに対してfn(i)r.execute(i * chunk_sie, m)を呼び出す関数オブジェクトfnとする。下記の式によってOperation Stateosを構築し、start(os)を呼び出す。

    connect(bulk(just-sndr-like, par, num_chunks, fn), WRAP-RCVR(r))
    

void schedule_bulk_unchunked(size_t shape, bulk_item_receiver_proxy& r,
                             span<byte> s) noexcept override;

  • 効果 : 整数iに対してfn(i)r.execute(i, i + 1)を呼び出す関数オブジェクトfnとする。下記の式によってOperation Stateosを構築し、start(os)を呼び出す。

    connect(bulk(just-sndr-like, par, shape, fn), WRAP-RCVR(r))
    

クラスts-domain

namespace std::execution {
  class task_scheduler::ts-domain : public default_domain {  // exposition only
  public:
    template<class BulkSndr, class Env>  // exposition only
    static constexpr auto transform_sender(set_value_t, BulkSndr&& bulk_sndr, const Env& env)
      noexcept(see below);
  };
}

template<class BulkSndr, class Env>
static constexpr auto transform_sender(BulkSndr&& bulk_sndr, const Env& env)
  noexcept(is_nothrow_constructible_v<decay_t<BulkSndr>, BulkSndr>);

バージョン

言語

  • C++26

処理系

関連項目

参照