最終更新:2021-01-07 (木) 21:41:38 (1202d)
std::thread
Top / std::thread
since C++11
http://www.bogotobogo.com/cplusplus/multithreaded4_cplusplus11.php
例
std::thread スレッド名(スレッドで実行する関数,引数); スレッド名.join();
staticでないメンバ
th = std::thread(&MyClass::member_func, this);
メンバ
std::thread::detach スレッドの管理を手放す std::thread::get_id? スレッドのIDを取得 std::thread::hardware_concurrency? HWでサポートされているCPUスレッド数を取得 std::thread::join スレッドが終了するまで待機する 関連付けれられたスレッドが完了するまで、この関数を呼び出したスレッドをブロックする std::thread::joinable? コンテキストがスレッドと関連付けられているならtrue、そうでなければfalse std::thread::native_handle プラットフォーム依存のスレッドハンドルを取得 std::thread::swap?
使えない場合
引数
- 別スレッドで実行される際にコピーして渡される
- コピー不可・またはコピーを避けたい場合はstd::moveを使う
現在のスレッド
メモ
- std::threadではスレッドに対する詳細設定が出来ませんので、native_handle()でプラットフォーム固有のスレッドハンドラを取得し、そのプラットフォームに合わせた形で設定する必要があります
ミューテックス
- std::mutex
- std::lock_guard
- std::unique_lock?
終了
- threadオブジェクトがjoinもdetachもせずにデストラクトされるとstd::terminateを呼び出して強制終了
- スレッドで実行される関数や関数オブジェクトの中で例外が発生し、その例外がキャッチされないまま外に送出されるとstd::terminateが呼ばれる