Public 型 | Public メソッド | Protected メソッド
クラス mist::thread_pool

スレッドプールを利用してスレッドの再利用を可能にするクラス [詳細]

#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)
 スレッドプールから必要な数だけスレッドを再開する

説明

スレッドプールを利用してスレッドの再利用を可能にするクラス

スレッドプールを利用して処理を実行した場合,処理用にスレッドプール内のスレッドを割り当てます. 処理が終了した場合は,スレッドはスレッドプールに回収され,別の処理へ割り当てられます. スレッドを再利用することにより,スレッドの生成破棄に必要なオーバーヘッドを削減します.

注意
初回起動時はスレッド生成に伴うオーバーヘッドがあります
使用例
struct parameter{ ... 何らかのパラメータ ... }; // スレッド関数に渡すパラメータ(特に構造体である必要は無い)
void thread_function( const parameter &p ); // スレッド関数(内部で何らかの処理をする)
// これ以降でスレッドを作成する
parameter param[ 処理を行う数 ];
for( i = 0 ; i < 処理を行う数 ; i++ )
{
パラメータに何らかの値を設定する
}
// スレッドプール内のスレッド数を指定して初期化
// 関数をパラメータを変えて複数回処理する
pool.executes( thread_function, param, 処理を行う数 );
// スレッドプール内のスレッドが実行している処理が全て終了するまで待機
pool.wait( );

関数

bool mist::thread_pool::exec ( __thread_controller__::__thread_pool_functor__ *  func)
inlineprotected

関数をスレッドプール内のスレッドに割り当てて実行する

引数
[in]func… 実行されるスレッド関数
template<class Functor , class Param >
bool mist::thread_pool::execute ( Functor  f,
Param  p 
)
inline

関数とパラメータを指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]p… スレッドの関数に渡すパラメータ
[in]f… 実行されるスレッド関数
template<class Functor , class Param1 , class Param2 >
bool mist::thread_pool::execute ( Functor  f,
Param1  p1,
Param2  p2 
)
inline

関数とパラメータを指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]p1… スレッドの関数に渡すパラメータ
[in,out]p2… スレッドの関数に渡すパラメータ
[in]f… 実行されるスレッド関数
template<class Functor , class Param1 , class Param2 , class Param3 >
bool mist::thread_pool::execute ( Functor  f,
Param1  p1,
Param2  p2,
Param3  p3 
)
inline

関数とパラメータを指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]p1… スレッドの関数に渡すパラメータ
[in,out]p2… スレッドの関数に渡すパラメータ
[in,out]p3… スレッドの関数に渡すパラメータ
[in]f… 実行されるスレッド関数
template<class Functor , class Param1 , class Param2 , class Param3 , class Param4 >
bool mist::thread_pool::execute ( Functor  f,
Param1  p1,
Param2  p2,
Param3  p3,
Param4  p4 
)
inline

関数とパラメータを指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]p1… スレッドの関数に渡すパラメータ
[in,out]p2… スレッドの関数に渡すパラメータ
[in,out]p3… スレッドの関数に渡すパラメータ
[in,out]p4… スレッドの関数に渡すパラメータ
[in]f… 実行されるスレッド関数
template<class Functor >
bool mist::thread_pool::execute ( Functor  f)
inline

関数とパラメータを指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す.

引数
[in]f… 実行されるスレッド関数
template<class Functor , class Param >
bool mist::thread_pool::executes ( Functor  f,
Param *  param,
size_t  num_threads 
)
inline

関数とパラメータを複数指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]param… スレッドの関数に渡すパラメータ
[in]num_threads… スレッド数
[in]f… 実行されるスレッド関数
template<class Functor , class Param1 , class Param2 >
bool mist::thread_pool::executes ( Functor  f,
Param1 *  param1,
Param2 *  param2,
size_t  num_threads 
)
inline

関数とパラメータを複数指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]param1… スレッドの関数に渡すパラメータ
[in,out]param2… スレッドの関数に渡すパラメータ
[in]num_threads… スレッド数
[in]f… 実行されるスレッド関数
template<class Functor , class Param1 , class Param2 , class Param3 >
bool mist::thread_pool::executes ( Functor  f,
Param1 *  param1,
Param2 *  param2,
Param3 *  param3,
size_t  num_threads 
)
inline

関数とパラメータを複数指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]param1… スレッドの関数に渡すパラメータ
[in,out]param2… スレッドの関数に渡すパラメータ
[in,out]param3… スレッドの関数に渡すパラメータ
[in]num_threads… スレッド数
[in]f… 実行されるスレッド関数
template<class Functor , class Param1 , class Param2 , class Param3 , class Param4 >
bool mist::thread_pool::executes ( Functor  f,
Param1 *  param1,
Param2 *  param2,
Param3 *  param3,
Param4 *  param4,
size_t  num_threads 
)
inline

関数とパラメータを複数指定してスレッドを実行する

スレッドプールの初期化が終了していない場合は false を返す. スレッドが実行する関数の引数はコピーして渡される.

引数
[in,out]param1… スレッドの関数に渡すパラメータ
[in,out]param2… スレッドの関数に渡すパラメータ
[in,out]param3… スレッドの関数に渡すパラメータ
[in,out]param4… スレッドの関数に渡すパラメータ
[in]num_threads… スレッド数
[in]f… 実行されるスレッド関数
bool mist::thread_pool::initialize ( size_type  number_of_max_threads)
inline

スレッドプール内で使用するスレッドの数を指定してスレッドプールを初期化する

既にスレッドプールを初期化している場合は,現在のスレッドが全て終了するまで待機する

引数
[in]number_of_max_threads… スレッドプールにためておくスレッドの数
void mist::thread_pool::resume_thread_from_queue ( size_type  num_threads)
inlineprotected

スレッドプールから必要な数だけスレッドを再開する

引数
[in]num_threads… リジュームするスレッド数
bool mist::thread_pool::uninitialize ( )
inline

スレッドプールで使用しているリソースを全て開放する

現在のスレッドが全て終了するまで待機し,スレッドプールで使用しているリソースを全て開放する

virtual bool mist::thread_pool::wait ( unsigned long  dwMilliseconds = INFINITE)
inlinevirtual

全てのスレッドが終了するか,タイムアウトになるまで待機する

タイムアウトを INFINITE に設定することで,スレッドが終了するまで待ち続ける. スレッドプールの初期化が終了していない場合は false を返す.

引数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… スレッドがタイムアウト前に終了した
false… タイムアウトが発生したか,その他のエラーが発生

このクラスの説明は次のファイルから生成されました:

Generated on Wed Nov 12 2014 19:44:29 for MIST by doxygen 1.8.1.2