virtual void schedule_bulk_unchunked(size_t n,
bulk_item_receiver_proxy& r,
span<byte> s) noexcept = 0;
概要
parallel_schedulerによるbulk_unchunkedアルゴリズムカスタマイズのバックエンド側を実装する。
事前条件
*this, rが参照するオブジェクト, sが参照するストレージの生存期間終了は、下記いずれか式の評価開始よりも後に発生(happen after)すること。
効果
派生クラスでは、この関数を下記のように実装すべきである。
- 下記いずれかの式が評価される
- エラーが発生せず作業が成功したとき、
r.set_value() - エラーが発生したとき、
eptrをexception_ptr型のオブジェクトとして、r.set_error(eptr) - 作業がキャンセルされたとき、
r.set_stopped()
- エラーが発生せず作業が成功したとき、
r.execute(b, e)が呼ばれたとき、bは範囲[0, n)内かつeはb + 1に等しい。[0, n)の各iについて、r.execute(i, i + 1)の呼び出しが最大で1つだけ存在する。r.set_value()が呼び出されたとき、[0, n)の各iに対して、r.execute(i, i + 1)の呼び出しが正確に1つだけ存在する。r上での全てのexecute呼び出しは、r上でのset_value/set_error/set_stoppedいずれかの呼び出しよりも前に発生する。r上での全てのexecuteおよびset_value呼び出しは、*thisで表される実行コンテキストの実行エージェント上で行われる。
備考
sが参照するストレージは、この呼び出しによって開始された操作の実行期間中*thisによって一時的なストレージとして使用される可能性がある。
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??