最終更新日時: 2026年06月09日 16時03分31秒 (JST)
yoh が更新

履歴 編集

class
<execution>

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

    namespace std::execution {
      class task_scheduler;
    }

## 概要

`task_scheduler`は、任意のScheduler型を型消去して保持するSchedulerである。

実行制御ライブラリのタスクコルーチン戻り値型`task<T, E>`において、環境`E`のデフォルトScheduler型として利用される。

## クラス仕様

`task_scheduler`は`scheduler`のモデルである。

`task_scheduler`型のオブジェクト`s`に対して、`SCHED(s)`を`s.sch_`が所有するポインタが指すオブジェクトとする。式`get_forward_progress_guarantee(s)`は`get_forward_progress_guarantee(SCHED(s))`と等価。式`get_completion_domain<set_value_t>(s)`は`task_scheduler::ts-domain()`と等価。

`task_scheduler`クラスは、下記の説明専用メンバ変数を持つ。

- `sch_` : `shared_ptr<parallel_scheduler_replacement::parallel_scheduler_backend>`型

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ | C++26
`(destructor)` | デストラクタ | C++26
`operator=` | 代入演算子 | C++26
`schedule` | スケジュールSenderを返す | C++26

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---
`scheduler_concept` | `scheduler_tag` | C++26

### 比較演算子

名前 | 説明 | 対応バージョン
--- | --- | ---
`operator==` | 等値比較 | C++26
`operator!=` | 非等値比較 (`==`により使用可能) | C++26

## 例

    #include <cassert>
    #include <execution>
    namespace ex = std::execution;

    int main()
    {
      ex::task_scheduler sch1{ ex::get_parallel_scheduler() };
      ex::task_scheduler sch2{ ex::inline_scheduler{} };
      assert(sch1 != sch2);
    }

### 出力

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `execution::scheduler`
- `execution::task`

## 参照

- P3552R3 Add a Coroutine Task Type
- LWG4446. Bad phrasing for `SCHED(s)`
- P3927R2 `task_scheduler` support for parallel `bulk` execution