最終更新:2021-01-07 (木) 21:41:38 (1198d)  

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()でプラットフォーム固有のスレッドハンドラを取得し、そのプラットフォームに合わせた形で設定する必要があります

ミューテックス

終了

  • threadオブジェクトがjoinもdetachもせずにデストラクトされるとstd::terminateを呼び出して強制終了
  • スレッドで実行される関数や関数オブジェクトの中で例外が発生し、その例外がキャッチされないまま外に送出されるとstd::terminateが呼ばれる

高度な機能

関連

参考