Namespaces
Variants

std:: jthread

From cppreference.net
Concurrency support library
Threads
(C++11)
jthread
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
ヘッダーで定義 <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 ではあります。

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++固有の用語(Member types、Member functions、Observers、Operations、Stop token handling、Non-member functions、Notes、See also)は原文のまま保持しました - HTMLタグ、属性、
タグ内のテキストは翻訳対象外のため、すべて元のまま保持しています
- 番号部分(tocnumber)は変更せず、書式も完全に維持しています

メンバー型

メンバー型 定義
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)
実装でサポートされる並行スレッドの数を返す
(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)

非メンバー関数

std::swap アルゴリズムを特殊化
(関数)

注記

機能テスト マクロ 標準 機能
__cpp_lib_jthread 201911L (C++20) ストップトークン および 結合スレッド

関連項目

(C++11)
個別のスレッドを管理する
(クラス)