std:: jthread
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Operations | ||||
| Stop token handling | ||||
| Non-member functions | ||||
|
ヘッダーで定義
<thread>
|
||
|
class
jthread
;
|
(C++20以降) | |
jthread
クラスは
単一の実行スレッド
を表します。このクラスは
std::thread
と基本的な動作は同じですが、
jthread
は破棄時に自動的に再結合され、特定の状況でキャンセル/停止が可能である点が異なります。
スレッドは、関連するスレッドオブジェクトの構築と同時に(OSのスケジューリング遅延がある場合を除き)、 コンストラクタ引数 として提供されたトップレベル関数から実行を開始します。トップレベル関数の戻り値は無視され、例外を送出して終了した場合は、 std::terminate が呼び出されます。トップレベル関数は、その戻り値や例外を呼び出し元に std::promise を介して、または共有変数を変更することで(同期が必要な場合があります。 std::mutex および std::atomic を参照)伝達することができます。
std::thread
とは異なり、
jthread
は論理的に内部に
std::stop_source
型のプライベートメンバを保持し、共有停止状態を管理します。
jthread
のコンストラクタは、第一引数として
std::stop_token
を受け取る関数を受け入れます。この
jthread
は内部の
std::stop_source
からこのトークンを渡します。これにより、関数は実行中に停止要求があったかどうかを確認し、要求があった場合に戻ることができます。
std::jthread
オブジェクトは、いかなるスレッドも表さない状態になることもあります(デフォルト構築後、ムーブ後、
detach
後、または
join
後)。また、実行スレッドがどの
jthread
オブジェクトにも関連付けられていない状態もあり得ます(
detach
後)。
2つの
std::jthread
オブジェクトが同じ実行スレッドを表すことはありません。
std::jthread
は
CopyConstructible
でも
CopyAssignable
でもありませんが、
MoveConstructible
および
MoveAssignable
ではあります。
目次 |
、
、
メンバー型
| メンバー型 | 定義 |
id
|
std::thread::id |
native_handle_type
(
オプション*
)
|
std::thread::native_handle_type |
メンバー関数
新しい
jthread
オブジェクトを構築する
(public member function) |
|
|
スレッドがjoin可能な場合、停止が要求されスレッドがjoinされる
(public member function) |
|
jthread
オブジェクトを移動する
(public member function) |
|
オブザーバ |
|
|
スレッドがjoin可能かどうか、すなわち並列コンテキストで実行されている可能性があるかどうかをチェックする
(public member function) |
|
|
スレッドの
id
を返す
(public member function) |
|
|
基盤となる実装定義のスレッドハンドルを返す
(public member function) |
|
|
[static]
|
実装でサポートされる並行スレッドの数を返す
(public static member function) |
操作 |
|
|
スレッドの実行が終了するのを待機する
(public member function) |
|
|
スレッドがスレッドハンドルから独立して実行することを許可する
(public member function) |
|
|
2つのjthreadオブジェクトを交換する
(public member function) |
|
ストップトークン処理 |
|
スレッドの共有停止状態に関連付けられた
stop_source
オブジェクトを返す
(public member function) |
|
スレッドの共有停止状態に関連付けられた
stop_token
を返す
(public member function) |
|
|
スレッドの共有停止状態を介して実行停止を要求する
(public member function) |
|
非メンバー関数
|
(C++20)
|
std::swap
アルゴリズムを特殊化
(関数) |
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_jthread
|
201911L
|
(C++20) | ストップトークン および 結合スレッド |
関連項目
|
(C++11)
|
個別のスレッドを管理する
(クラス) |