std::thread
From cppreference.com
| ヘッダ <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) | |
| [static] |
実装がサポートする並行スレッド数を返す (public static member function) |
操作 | |
| スレッドが実行を完了するまで待機する (public member function) | |
| スレッドがスレッドハンドルから独立して実行を継続できるようにする (public member function) | |
| 2つのスレッドオブジェクトを交換する (public member function) | |
[編集] 非メンバ関数
| (C++11) |
std::swap アルゴリズムを特殊化する (function) |
[編集] 関連項目
| (C++20) |
自動joinとキャンセルをサポートする std::thread (class) |