名前空間
変種
操作

std::thread

From cppreference.com
< cpp‎ | thread
 
 
並行性サポートライブラリ
スレッド
thread
(C++11)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
協調的なキャンセル
排他制御
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
(C++11)(C++20で非推奨)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
 
ヘッダ <thread> で定義
class thread;
(C++11以降)

thread クラスは、単一の実行スレッドを表す。スレッドによって、複数の関数を並行に実行できる。

スレッドは、関連付けられたスレッドオブジェクトの構築と同時に(OSのスケジューリングによる遅延がなければ)実行を開始し、コンストラクタ引数として渡されたトップレベル関数から始まる。トップレベル関数の戻り値は無視され、例外をスローして終了した場合は std::terminate が呼び出される。トップレベル関数は、std::promise を介して、あるいは共有変数を変更することによって(同期が必要になる場合がある。 std::mutex および std::atomic を参照)、戻り値や例外を呼び出し元に伝えることができる。

std::thread オブジェクトは、どのスレッドも表さない状態になることもある(デフォルト構築後、ムーブ元、detach、または join の後)。また、実行スレッドがいかなる thread オブジェクトにも関連付けられていない場合もある(detach の後)。

2つの std::thread オブジェクトが同じ実行スレッドを表すことはない。std::threadコピー構築可能 (CopyConstructible)でもコピー代入可能 (CopyAssignable)でもないが、ムーブ構築可能 (MoveConstructible)かつムーブ代入可能 (MoveAssignable)である。

目次

[編集] メンバ型

メンバ型 定義
native_handle_type (任意*) 実装定義[編集]

[編集] メンバクラス

スレッドのIDを表す
(public member class) [編集]

[編集] メンバ関数

新しい thread オブジェクトを構築する
(public member function) [編集]
スレッドオブジェクトを破棄する。内部のスレッドは join または detach されていなければならない
(public member function) [編集]
スレッドオブジェクトをムーブする
(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つのスレッドオブジェクトを交換する
(public member function) [編集]

[編集] 非メンバ関数

std::swap アルゴリズムを特殊化する
(function) [編集]

[編集] 関連項目

(C++20)
自動joinとキャンセルをサポートする std::thread
(class) [編集]
English 日本語 中文(简体) 中文(繁體)