最終更新日時: 2026年06月08日 10時24分20秒 (JST)
yoh が更新

履歴 編集

function
<execution>

# std::execution::parallel_scheduler_replacement::parallel_scheduler_backend::schedule(C++26)

    virtual void schedule(receiver_proxy& r, span<byte> s) noexcept = 0;

## 概要

`parallel_scheduler`による`schedule`アルゴリズムカスタマイズのバックエンド側を実装する。

## 事前条件

`*this`、`r`が参照するオブジェクト、`s`が参照するストレージの生存期間終了は、`r`に対する`set_value`／`set_error`／`set_stopped`いずれかの呼び出しの評価開始よりも後に発生すること。

## 効果

派生クラスでは、この関数を下記のように実装すべきである。

- 下記いずれかの式が評価される
  - エラーが発生せず作業が成功したとき、`r.set_value()`
  - エラーが発生したとき、`eptr`を`exception_ptr`型のオブジェクトとして、`r.set_error(eptr)`
  - 作業がキャンセルされたとき、`r.set_stopped()`
- 任意の`r.set_value()`呼び出しは、`*this`で表される実行コンテキストの実行エージェント上で発生する。

## 備考

`s`が参照するストレージは、この呼び出しによって開始された操作の実行期間中`*this`によって一時的なストレージとして使用される可能性がある。

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `execution::schedule`
- `execution::parallel_scheduler`

## 参照

- P2079R10 Parallel scheduler
- P3914R0 Assorted NB comment resolutions for Kona 2025, US 265-398, 266-399