Skip to content

Commit 494c6d2

Browse files
committed
C++26 std::executionエンティティ一覧(#1384)
- <stop_token>ヘッダ - <execution>ヘッダ
1 parent 97d288b commit 494c6d2

File tree

5 files changed

+170
-8
lines changed

5 files changed

+170
-8
lines changed

reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
| [`<memory_resource>`](/reference/memory_resource.md) | 多相アロケータ | C++17 |
7474
| [`<chrono>`](/reference/chrono.md) | 時間ユーティリティ | C++11 |
7575
| [`<typeindex>`](/reference/typeindex.md) | 型のインデックス | C++11 |
76-
| [`<execution>`](/reference/execution.md) | 実行ポリシー | C++17 |
76+
| [`<execution>`](/reference/execution.md) | 実行ポリシー、実行制御ライブラリ(C++26) | C++17 |
7777
| [`<charconv>`](/reference/charconv.md) | 高速な文字列 ⇔ 数値変換 | C++17 |
7878
| [`<format>`](/reference/format.md) | 文字列フォーマット | C++20 |
7979
| [`<stacktrace>`](/reference/stacktrace.md) | スタックトレース | C++23 |

reference/execution.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,30 @@
22
* execution[meta header]
33
* cpp17[meta cpp]
44

5-
`<execution>`ヘッダでは、アルゴリズムの並列実行を許可するための実行ポリシー型を定義する
5+
`<execution>`ヘッダでは、アルゴリズムの並列実行を許可するための実行ポリシー、汎用的な非同期実行フレームワークとしての実行制御ライブラリを定義する
66

77

8+
## 実行ポリシー(C++17)
9+
10+
| 名前 | 説明 | 対応バージョン |
11+
|------|------|----------------|
12+
| [`execution`](execution/execution.md) | 実行ポリシー用の名前空間 (namespace) | C++17 |
13+
| [`is_execution_policy`](execution/is_execution_policy.md) | 型が実行ポリシーかを判定する (class template) | C++17 |
14+
15+
16+
## 実行制御ライブラリ(C++26)
17+
818
| 名前 | 説明 | 対応バージョン |
919
|------|------|----------------|
10-
| [`is_execution_policy`](execution/is_execution_policy.md) | 型が実行ポリシーかを判定する | C++17 |
11-
| [`execution`](execution/execution.md) | 実行ポリシー用の名前空間 | C++17 |
20+
| [`execution`](execution/execution.md) | 実行制御ライブラリの名前空間 (namespace) | C++26 |
21+
| [`this_thread`](execution/execution.md) | 実行制御ライブラリ/Senderコンシューマの名前空間 (namespace) | C++26 |
1222

1323

1424
## バージョン
1525
### 言語
1626
- C++17
27+
- C++26 実行制御ライブラリ
1728

1829
## 参照
1930
- [P0024R2 The Parallelism TS Should be Standardized](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html)
31+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/execution/execution.md

Lines changed: 136 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
* namespace[meta id-type]
55
* cpp17[meta cpp]
66

7-
名前空間 `std::execution` では、アルゴリズムの並列実行を許可するための実行ポリシーに関する機能の定義を行う。
7+
名前空間 `std::execution` では、アルゴリズムの並列実行を許可するための実行ポリシー、汎用的な非同期実行フレームワークとしての実行制御ライブラリを定義する。
8+
(実行制御ライブラリの一部は名前空間 `std` および `std::this_thread` で定義されるが、本ページでまとめて取り扱う。)
89

910
```cpp
1011
namespace std::execution {
1112
1213
}
1314
```
1415
16+
## 実行ポリシー(C++17)
1517
1618
| 名前 | 説明 | 対応バージョン |
1719
|------|------|----------------|
@@ -24,7 +26,140 @@ namespace std::execution {
2426
| [`par_unseq`](execution/execution_policy.md) | マルチスレッド化/ベクトル化の実行ポリシー値 (variable) | C++17 |
2527
| [`unseq`](execution/execution_policy.md) | ベクトル化の実行ポリシー値 (variable) | C++20 |
2628
29+
実行ポリシーは全て名前空間 `std::execution` で定義される。
30+
31+
32+
## 実行制御ライブラリ(C++26)
33+
34+
### Queries
35+
36+
| 名前 | 説明 | 対応バージョン |
37+
|------|------|----------------|
38+
| [`forwarding_query`](forwarding_query.md.nolink) | 進行保証の問い合わせオブジェクト (customization point object) | C++26 |
39+
| [`get_allocator`](get_allocator.md.nolink) | アロケータ取得の問い合わせオブジェクト (customization point object) | C++26 |
40+
| [`get_stop_token`](get_stop_token.md.nolink) | 停止トークン取得の問い合わせオブジェクト (customization point object) | C++26 |
41+
| [`stop_token_of_t`](get_stop_token.md.nolink) | 指定型から停止トークン型を取得 (alias template) | C++26 |
42+
| [`execution::get_domain`](execution/get_domain.md.nolink) | 実行ドメイン取得の問い合わせオブジェクト (customization point object) | C++26 |
43+
| [`execution::get_scheduler`](execution/get_scheduler.md.nolink) | Scheduler取得の問い合わせオブジェクト (customization point object) | C++26 |
44+
| [`execution::get_delegation_scheduler`](execution/get_delegation_scheduler.md.nolink) | 委譲Scheduler取得の問い合わせオブジェクト (customization point object) | C++26 |
45+
| [`execution::forward_progress_guarantee`](execution/forward_progress_guarantee.md.nolink) | 前進保証 (enum) | C++26 |
46+
| [`execution::get_forward_progress_guarantee`](execution/get_forward_progress_guarantee.md.nolink) | 前進保証取得の問い合わせオブジェクト (customization point object) | C++26 |
47+
| [`execution::get_completion_scheduler`](execution/get_completion_scheduler.md.nolink) | 完了Scheduler取得の問い合わせオブジェクト (customization point object) | C++26 |
48+
| [`execution::get_env`](execution/get_env.md.nolink) | 環境取得の問い合わせオブジェクト (customization point object) | C++26 |
49+
| [`execution::env_of_t`](execution/env_of_t.md.nolink) | 指定型から環境型を取得 (alias template) | C++26 |
50+
| [`execution::prop`](execution/prop.md.nolink) | プロパティ(class template) | C++26 |
51+
| [`execution::env`](execution/env.md.nolink) | 環境 (class template) | C++26 |
52+
53+
問い合わせオブジェクトは名前空間 `std` および名前空間 `std::execution` で定義される。
54+
55+
### Scheduler
56+
57+
| 名前 | 説明 | 対応バージョン |
58+
|------|------|----------------|
59+
| [`execution::scheduler`](execution/scheduler.md.nolink) | Scheduler (concept) | C++26 |
60+
61+
### Reciever
62+
63+
| 名前 | 説明 | 対応バージョン |
64+
|------|------|----------------|
65+
| [`execution::receiver`](execution/receiver.md.nolink) | Reciever (concept) | C++26 |
66+
| [`execution::receiver_of`](execution/receiver_of.md.nolink) | 完了ハンドラ指定Reciever (concept) | C++26 |
67+
| [`execution::set_value`](execution/set_value.md.nolink) | 値による完了関数 (customization point object) | C++26 |
68+
| [`execution::set_error`](execution/set_error.md.nolink) | エラーによる完了関数 (customization point object) | C++26 |
69+
| [`execution::set_stopped`](execution/set_stopped.md.nolink) | 停止による完了関数 (customization point object) | C++26 |
70+
71+
### Operation State
72+
73+
| 名前 | 説明 | 対応バージョン |
74+
|------|------|----------------|
75+
| [`execution::operation_state`](execution/operation_state.md.nolink) | Operation State (concept) | C++26 |
76+
| [`execution::start`](execution/start.md.nolink) | 非同期操作の開始 (customization point object) | C++26 |
77+
78+
### Sender
79+
80+
| 名前 | 説明 | 対応バージョン |
81+
|------|------|----------------|
82+
| [`execution::default_domain`](execution/default_domain.md.nolink) | デフォルト実行ドメイン (class) | C++26 |
83+
| [`execution::sender`](execution/sender.md.nolink) | Sender (concept) | C++26 |
84+
| [`execution::sender_in`](execution/sender_in.md.nolink) | 環境に対応するSender (concept) | C++26 |
85+
| [`execution::sender_to`](execution/sender_to.md.nolink) | Recieverに対応するSender (concept) | C++26 |
86+
| [`execution::get_completion_signatures`](execution/get_completion_signatures.md.nolink) | 完了シグネチャ取得の問い合わせオブジェクト (customization point object) | C++26 |
87+
| [`execution::completion_signatures_of_t`](execution/get_completion_signatures.md.nolink) | Senderから完了シグネチャを取得 (alias template) | C++26 |
88+
| [`execution::value_types_of_t`](execution/value_types_of_t.md.nolink) | Senderの値完了型を取得 (alias template) | C++26 |
89+
| [`execution::error_types_of_t`](execution/error_types_of_t.md.nolink) | Senderのエラー完了型を取得 (alias template) | C++26 |
90+
| [`execution::sends_stopped`](execution/value_types_of_t.md.nolink) | Senderが停止完了に対応するか否か (variable template) | C++26 |
91+
| [`execution::tag_of_t`](execution/tag_of_t.md.nolink) | Senderのタグ型を取得 (alias template) | C++26 |
92+
| [`execution::transform_sender`](execution/transform_sender.md.nolink) | Senderを変換 (function template) | C++26 |
93+
| [`execution::transform_env`](execution/transform_env.md.nolink) | 問い合わせオブジェクトを変換 (function template) | C++26 |
94+
| [`execution::apply_sender`](execution/apply_sender.md.nolink) | Senderにタグ型と引数を適用 (function template) | C++26 |
95+
| [`execution::connect`](execution/connect.md.nolink) | SenderとRecieverを接続 (customization point object) | C++26 |
96+
| [`execution::connect_result_t`](execution/connect_result_t.md.nolink) | `connect`結果型を取得 (alias template) | C++26 |
97+
98+
### Senderファクトリ
99+
100+
| 名前 | 説明 | 対応バージョン |
101+
|------|------|----------------|
102+
| [`execution::just`](execution/just.md.nolink) | 値を送信するSender (customization point object) | C++26 |
103+
| [`execution::just_error`](execution/just_error.md.nolink) | エラーを送信するSender (customization point object) | C++26 |
104+
| [`execution::just_stopped`](execution/just_stopped.md.nolink) | 停止を送信するSender (customization point object) | C++26 |
105+
| [`execution::read_env`](execution/read_env.md.nolink) | Reciever環境から構築されるSender (customization point object) | C++26 |
106+
| [`execution::schedule`](execution/schedule.md.nolink) | Scheduler上で実行されるSender (customization point object) | C++26 |
107+
| [`execution::schedule_result_t`](execution/schedule_result_t.md.nolink) | `schedule`結果型を取得 (alias template) | C++26 |
108+
109+
### Senderアダプタ
110+
111+
| 名前 | 説明 | 対応バージョン |
112+
|------|------|----------------|
113+
| [`execution::sender_adaptor_closure`](execution/sender_adaptor_closure.md.nolink) | Senderアダプタ実装用クロージャ型(class template) | C++26 |
114+
| [`execution::starts_on`](execution/starts_on.md.nolink) | 指定Scheduler上で開始する (customization point object) | C++26 |
115+
| [`execution::continues_on`](execution/continues_on.md.nolink) | 指定Scheduler上で継続する (customization point object) | C++26 |
116+
| [`execution::on`](execution/on.md.nolink) | 指定Scheduler上で実行する (customization point object) | C++26 |
117+
| [`execution::schedule_from`](execution/schedule_from.md.nolink) | Sender完了に依存する作業をスケジュール (customization point object) | C++26 |
118+
| [`execution::then`](execution/then.md.nolink) | 値完了時の継続処理をアタッチ (customization point object) | C++26 |
119+
| [`execution::upon_error`](execution/upon_error.md.nolink) | エラー完了時の継続処理をアタッチ (customization point object) | C++26 |
120+
| [`execution::upon_stopped`](execution/upon_stopped.md.nolink) | 停止完了時の継続処理をアタッチ (customization point object) | C++26 |
121+
| [`execution::let_value`](execution/let_value.md.nolink) | 値完了の継続にユーザ定義処理を連結 (customization point object) | C++26 |
122+
| [`execution::let_error`](execution/let_error.md.nolink) | エラー完了の継続にユーザ定義処理を連結 (customization point object) | C++26 |
123+
| [`execution::let_stopped`](execution/let_stopped.md.nolink) | 停止完了の継続にユーザ定義処理を連結 (customization point object) | C++26 |
124+
| [`execution::bulk`](execution/bulk.md.nolink) | インデクス空間上で指定関数を連続実行 (customization point object) | C++26 |
125+
| [`execution::split`](execution/split.md.nolink) | 入力Senderの値を複製送信 (customization point object) | C++26 |
126+
| [`execution::when_all`](execution/when_all.md.nolink) | 全ての入力Sender完了を待機 (customization point object) | C++26 |
127+
| [`execution::when_all_with_variant`](execution/when_all_with_variant.md.nolink) | 複数の値完了シグネチャをもつ全ての入力Sender完了を待機 (customization point object) | C++26 |
128+
| [`execution::into_variant`](execution/into_variant.md.nolink) | 複数の値完了シグネチャを単一[`variant`](/reference/variant/variant.md)型の値完了シグネチャに変換 (customization point object) | C++26 |
129+
| [`execution::stopped_as_optional`](execution/stopped_as_optional.md.nolink) | 入力Senderの停止完了を[`optional`](/reference/optional/optional.md)型の値完了に変換 (customization point object) | C++26 |
130+
| [`execution::stopped_as_error`](execution/stopped_as_error.md.nolink) | 入力Senderの停止完了をエラー完了に変換 (customization point object) | C++26 |
131+
132+
### Senderコンシューマ
133+
134+
| 名前 | 説明 | 対応バージョン |
135+
|------|------|----------------|
136+
| [`this_thread::sync_wait`](this_thread/sync_wait.md.nolink) | 現在のスレッド上でSender完了を待機 (customization point object) | C++26 |
137+
| [`this_thread::sync_wait_with_variant`](this_thread/sync_wait_with_variant.md.nolink) | 現在のスレッド上でSender完了を待機 (customization point object) | C++26 |
138+
139+
Senderコンシューマは名前空間 `std::this_thread` で定義される。
140+
141+
### Sender/Recieverユーティリティ
142+
143+
| 名前 | 説明 | 対応バージョン |
144+
|------|------|----------------|
145+
| [`execution::completion_signatures`](execution/completion_signatures.md.nolink) | 完了シグネチャ (class template) | C++26 |
146+
| [`execution::transform_completion_signatures`](execution/transform_completion_signatures.md.nolink) | 完了シグネチャを変換 (alias template) | C++26 |
147+
| [`execution::transform_completion_signatures_of`](execution/transform_completion_signatures_of.md.nolink) | 完了シグネチャを変換 (alias template) | C++26 |
148+
| [`execution::run_loop`](execution/run_loop.md.nolink) | 実行ループ (class) | C++26 |
149+
150+
### コルーチンユーティリティ
151+
152+
| 名前 | 説明 | 対応バージョン |
153+
|------|------|----------------|
154+
| [`execution::as_awaitable`](execution/as_awaitable.md.nolink) | Senderを[Awaitable型](/lang/cpp20/coroutines.md)へ変換 (customization point object) | C++26 |
155+
| [`execution::with_awaitable_senders`](execution/with_awaitable_senders.md.nolink) | [Promise型](/lang/cpp20/coroutines.md)の基底クラス (class template) | C++26 |
156+
27157
28158
## バージョン
29159
### 言語
30160
- C++17
161+
- C++26 実行制御ライブラリ
162+
163+
## 参照
164+
- [P0024R2 The Parallelism TS Should be Standardized](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html)
165+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

reference/stop_token.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,25 @@
22
* stop_token[meta header]
33
* cpp20[meta cpp]
44

5-
`<stop_token>`ヘッダはマルチスレッド処理に対する停止要求の状態 `停止状態` を扱うクラスを定義する。
5+
`<stop_token>`ヘッダは、マルチスレッド処理や非同期処理おける停止要求の状態 `停止状態` を扱うクラスを定義する。
6+
7+
- [`stop_token`](stop_token/stop_token.md), [`stop_source`](stop_token/stop_source.md), [`stop_callback`](stop_token/stop_callback.md)は停止状態を共有所有する。最後に破棄されたオブジェクトが停止状態を自動的に解放する。
8+
- [`inplace_stop_source`](stop_token/inplace_stop_source.md.nolink)は停止状態をメンバとして直接所有する。[`inplace_stop_token`](stop_token/inplace_stop_token.md.nolink)[`inplace_stop_callback`](stop_token/inplace_stop_callback.md.nolink)は停止状態の所有には関与しない。
69

710
| 名前 | 説明 | 対応バージョン |
811
|-----------------------------------------------|------------------------------|-------|
9-
| [`stop_token`](stop_token/stop_token.md) | 停止状態を表すクラス(class) | C++20 |
12+
| [`stoppable_token`](stop_token/stoppable_token.md.nolink) | 停止可能な停止トークン(concept) | C++26 |
13+
| [`unstoppable_token`](stop_token/unstoppable_token.md.nolink) | 停止不可能な停止トークン(concept) | C++26 |
14+
| [`stop_token`](stop_token/stop_token.md) | 停止トークン(class) | C++20 |
1015
| [`stop_source`](stop_token/stop_source.md) | 停止要求を発生させるクラス(class) | C++20 |
11-
| [`stop_callback`](stop_token/stop_callback.md)| 停止要求に応じて呼び出されるコールバックを表すクラステンプレート (class template) | C++20 |
16+
| [`stop_callback`](stop_token/stop_callback.md)| 停止要求に応じて呼び出されるコールバック (class template) | C++20 |
1217
| [`nostopstate`](stop_token/nostopstate.md) | 停止状態を扱わない[`stop_source`](stop_token/stop_source.md)を構築するためのタグ (class) | C++20 |
18+
| [`never_stop_token`](stop_token/never_stop_token.md.nolink) | 停止不可能な停止トークン(class) | C++26 |
19+
| [`inplace_stop_token`](stop_token/inplace_stop_token.md.nolink) | インプレース停止トークン(class) | C++26 |
20+
| [`inplace_stop_source`](stop_token/inplace_stop_source.md.nolink) | インプレース停止要求を発生させるクラス(class) | C++26 |
21+
| [`inplace_stop_callback`](stop_token/inplace_stop_callback.md.nolink) | インプレース停止要求に応じて呼び出されるコールバック(class template) | C++26 |
22+
| [`stop_callback_for_t`](stop_token/stop_callback_for_t.md.nolink) | 停止トークンに対応するコールバック型を取得(alias template) | C++26 |
23+
1324

1425
## バージョン
1526
### 言語
@@ -24,3 +35,4 @@
2435

2536
## 参照
2637
- [P0660R10 Stop token and joining thread](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf)
38+
- [P2300R10 `std::execution`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2300r10.html)

working_style.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ C++11以降対応については対応バージョンを明記します。バー
7070
| base class | 基底クラス |
7171
| bidirectional iterator | 双方向イテレータ |
7272
| bucket | バケット |
73+
| completion signature | 完了シグネチャ |
7374
| complexity | 計算量 |
7475
| compound type | 複合型 |
7576
| const iterator | 読み取り専用イテレータ |
@@ -121,6 +122,7 @@ C++11以降対応については対応バージョンを明記します。バー
121122
| predicate | 述語 |
122123
| propagation, propagate | 伝播<br/> (伝搬は誤用が広まったものなので使わない) |
123124
| pure virtual function | 純粋仮想関数 |
125+
| query object | 問い合わせオブジェクト |
124126
| random access iterator | ランダムアクセスイテレータ |
125127
| range | 一般用途の場合:範囲<br/> Rangeアルゴリズム・Rangeアダプタ・Rangeオブジェクトの場合:Range<br/> range-based for:範囲for文<br/> 2つのイテレータによる範囲:イテレータ範囲 |
126128
| region of RCU protection | RCU保護区間 |
@@ -134,6 +136,7 @@ C++11以降対応については対応バージョンを明記します。バー
134136
| static extent | (std::mdspanの) 静的要素数 |
135137
| stop request | 停止要求 |
136138
| stop state | 停止状態 |
139+
| stop token | 停止トークン |
137140
| Spurious Failure | 見かけ上の失敗<br/> [https://togetter.com/li/430770](https://togetter.com/li/430770) |
138141
| strict weak ordering | 狭義の弱順序 |
139142
| stride | (std::mdspanの) ストライド幅 |

0 commit comments

Comments
 (0)