最終更新日時: 2025年04月07日 18時24分46秒 (JST)
yoh が更新

履歴 編集

<stop_token>

# stop_token(C++20)

`<stop_token>`ヘッダは、マルチスレッド処理や非同期処理おける停止要求の状態 `停止状態` を扱うクラスを定義する。

- `stop_token`, `stop_source`, `stop_callback`は停止状態を共有所有する。最後に破棄されたオブジェクトが停止状態を自動的に解放する。
- `inplace_stop_source`は停止状態をメンバとして直接所有する。`inplace_stop_token`と`inplace_stop_callback`は停止状態の所有には関与しない。

## コンセプト

名前 | 説明 | 対応バージョン
--- | --- | ---
`stoppable_token` | 停止トークン型であることを表す (concept) | C++26
`unstoppable_token` | 停止不可能な停止トークン型であることを表す (concept) | C++26

## 停止トークン

名前 | 説明 | 対応バージョン
--- | --- | ---
`stop_token` | `stop_source`の停止トークン (class) | C++20
`stop_source` | 停止状態を共有所有する停止要求インタフェース (class) | C++20
`stop_callback` | `stop_source`停止要求に応じて呼び出されるコールバック (class template) | C++20
`nostopstate` | 停止状態を扱わない`stop_source`構築用タグ (class) | C++20
`never_stop_token` | 停止不可能な停止トークン (class) | C++26
`inplace_stop_token` | `inplace_stop_source`の停止トークン (class) | C++26
`inplace_stop_source` | 停止状態を直接所有する停止要求インタフェース (class) | C++26
`inplace_stop_callback` | `inplace_stop_source`停止要求に応じて呼び出されるコールバック (class template) | C++26
`stop_callback_for_t` | 対応するコールバック型を取得 (alias template) | C++26

## バージョン

### 言語

- C++20

### 処理系

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

## 参照

- P0660R10 Stop token and joining thread
- P2300R10 `std::execution`