C++でマルチスレッドを実現する方法
C++によるマルチスレッドの実装方法には次のようなものがあります。
- C++11のstd::threadクラスを利用する。std::thread 객체を作成することで新しいスレッドが生まれます。この際、実行する関数や関数オブジェクトを指定します。
- C++11規格に含まれるstd::async関数を使用する。 std::async関数は関数呼び出しを非同期的に実行するためのタスクにカプセル化し、std::futureオブジェクトを返却する。このオブジェクトを使用して関数の戻り値を取得できる。
- C++11標準に定められたstd::async関数とstd::launch::asyncフラグを利用する:std::launch::asyncフラグを使うことで、std::async関数が呼び出された時点で即時実行となり、std::futureオブジェクトのget()関数が呼び出される時点での実行とはならない。
- POSIXスレッドライブラリを利用する:pthread_create関数を呼び出し、実行する関数を指定して新しいスレッドを作成する。この方法はC++規格以前からの方法である。
- Windowsスレッドライブラリを使用する: CreateThread 関数を呼び出すことで新しいスレッドを作成し、実行する関数を指定します。この手法は Windows プラットフォーム上でマルチスレッドを作成する 1 つの方法です。
これらの手法以外にも、Boost.ThreadやOpenMPといった、マルチスレッドを実現するのに使われるサードパーティー製のライブラリーやフレームワークがいくつかあります。