スレッドプールを利用してスレッドの再利用を可能にするクラス [詳細]
#include <thread.h>
Public 型 | |
typedef size_t | size_type |
符号なしの整数を表す型.コンテナ内の要素数や,各要素を指定するときなどに利用し,内部的には size_t 型と同じ | |
typedef ptrdiff_t | difference_type |
符号付きの整数を表す型.コンテナ内の要素数や,各要素を指定するときなどに利用し,内部的には ptrdiff_t 型と同じ |
Public メソッド | |
thread_pool () | |
スレッドプール内のオブジェクトを作成するが,スレッドプール内のスレッドは0の状態で初期化する(initialize関数を呼び出す必要あり) | |
thread_pool (size_type number_of_max_threads) | |
スレッドプール内のスレッド数を指定し,すぐにスレッドプールを使える状態で初期化する | |
virtual | ~thread_pool () |
スレッドプールで使用している全てのリソースを開放する | |
bool | initialize (size_type number_of_max_threads) |
スレッドプール内で使用するスレッドの数を指定してスレッドプールを初期化する | |
bool | uninitialize () |
スレッドプールで使用しているリソースを全て開放する | |
template<class Functor , class Param > | |
bool | execute (Functor f, Param p) |
関数とパラメータを指定してスレッドを実行する | |
template<class Functor , class Param1 , class Param2 > | |
bool | execute (Functor f, Param1 p1, Param2 p2) |
関数とパラメータを指定してスレッドを実行する | |
template<class Functor , class Param1 , class Param2 , class Param3 > | |
bool | execute (Functor f, Param1 p1, Param2 p2, Param3 p3) |
関数とパラメータを指定してスレッドを実行する | |
template<class Functor , class Param1 , class Param2 , class Param3 , class Param4 > | |
bool | execute (Functor f, Param1 p1, Param2 p2, Param3 p3, Param4 p4) |
関数とパラメータを指定してスレッドを実行する | |
template<class Functor > | |
bool | execute (Functor f) |
関数とパラメータを指定してスレッドを実行する | |
template<class Functor , class Param > | |
bool | executes (Functor f, Param *param, size_t num_threads) |
関数とパラメータを複数指定してスレッドを実行する | |
template<class Functor , class Param1 , class Param2 > | |
bool | executes (Functor f, Param1 *param1, Param2 *param2, size_t num_threads) |
関数とパラメータを複数指定してスレッドを実行する | |
template<class Functor , class Param1 , class Param2 , class Param3 > | |
bool | executes (Functor f, Param1 *param1, Param2 *param2, Param3 *param3, size_t num_threads) |
関数とパラメータを複数指定してスレッドを実行する | |
template<class Functor , class Param1 , class Param2 , class Param3 , class Param4 > | |
bool | executes (Functor f, Param1 *param1, Param2 *param2, Param3 *param3, Param4 *param4, size_t num_threads) |
関数とパラメータを複数指定してスレッドを実行する | |
virtual bool | wait (unsigned long dwMilliseconds=INFINITE) |
全てのスレッドが終了するか,タイムアウトになるまで待機する |
Protected メソッド | |
bool | exec (__thread_controller__::__thread_pool_functor__ *func) |
関数をスレッドプール内のスレッドに割り当てて実行する | |
void | resume_thread_from_queue (size_type num_threads) |
スレッドプールから必要な数だけスレッドを再開する |
スレッドプールを利用してスレッドの再利用を可能にするクラス
スレッドプールを利用して処理を実行した場合,処理用にスレッドプール内のスレッドを割り当てます. 処理が終了した場合は,スレッドはスレッドプールに回収され,別の処理へ割り当てられます. スレッドを再利用することにより,スレッドの生成破棄に必要なオーバーヘッドを削減します.
|
inlineprotected |
関数をスレッドプール内のスレッドに割り当てて実行する
[in] | func | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | p | … スレッドの関数に渡すパラメータ |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | p1 | … スレッドの関数に渡すパラメータ |
[in,out] | p2 | … スレッドの関数に渡すパラメータ |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | p1 | … スレッドの関数に渡すパラメータ |
[in,out] | p2 | … スレッドの関数に渡すパラメータ |
[in,out] | p3 | … スレッドの関数に渡すパラメータ |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | p1 | … スレッドの関数に渡すパラメータ |
[in,out] | p2 | … スレッドの関数に渡すパラメータ |
[in,out] | p3 | … スレッドの関数に渡すパラメータ |
[in,out] | p4 | … スレッドの関数に渡すパラメータ |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す.
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを複数指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | param | … スレッドの関数に渡すパラメータ |
[in] | num_threads | … スレッド数 |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを複数指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | param1 | … スレッドの関数に渡すパラメータ |
[in,out] | param2 | … スレッドの関数に渡すパラメータ |
[in] | num_threads | … スレッド数 |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを複数指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | param1 | … スレッドの関数に渡すパラメータ |
[in,out] | param2 | … スレッドの関数に渡すパラメータ |
[in,out] | param3 | … スレッドの関数に渡すパラメータ |
[in] | num_threads | … スレッド数 |
[in] | f | … 実行されるスレッド関数 |
|
inline |
関数とパラメータを複数指定してスレッドを実行する
スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.
[in,out] | param1 | … スレッドの関数に渡すパラメータ |
[in,out] | param2 | … スレッドの関数に渡すパラメータ |
[in,out] | param3 | … スレッドの関数に渡すパラメータ |
[in,out] | param4 | … スレッドの関数に渡すパラメータ |
[in] | num_threads | … スレッド数 |
[in] | f | … 実行されるスレッド関数 |
|
inline |
スレッドプール内で使用するスレッドの数を指定してスレッドプールを初期化する
既にスレッドプールを初期化している場合は,現在のスレッドが全て終了するまで待機する
[in] | number_of_max_threads | … スレッドプールにためておくスレッドの数 |
|
inlineprotected |
スレッドプールから必要な数だけスレッドを再開する
[in] | num_threads | … リジュームするスレッド数 |
|
inline |
スレッドプールで使用しているリソースを全て開放する
現在のスレッドが全て終了するまで待機し,スレッドプールで使用しているリソースを全て開放する
|
inlinevirtual |
全てのスレッドが終了するか,タイムアウトになるまで待機する
タイムアウトを INFINITE に設定することで,スレッドが終了するまで待ち続ける. スレッドプールの初期化が終了していない場合は false を返す.
[in] | dwMilliseconds | … タイムアウト時間(ミリ秒単位) |
true | … スレッドがタイムアウト前に終了した |
false | … タイムアウトが発生したか,その他のエラーが発生 |