データ構造 | 関数
スレッド

データ構造

struct  mist::simple_lock_object
 スレッドの排他制御をサポートする最も単純なクラス [詳細]
struct  mist::lock_object
 スレッドの排他制御をサポートするクラス [詳細]
class  mist::lock
 スレッドの排他制御を簡便に記述するためのヘルパクラス [詳細]
class  mist::thread< thread_parameter >
 template 型のデータを扱うことができるスレッドクラス [詳細]
class  mist::thread_pool
 スレッドプールを利用してスレッドの再利用を可能にするクラス [詳細]
class  mist::worker_thread
 バックグラウンドで実行するワーカースレッドを実現するクラス [詳細]
class  mist::thread_handle
 生成したスレッドを管理するクラス [詳細]

関数

size_t mist::get_cpu_num ()
 利用可能なCPU数を取得する
void mist::sleep (size_t dwMilliseconds)
 指定した時間だけスリープする(ミリ秒単位)
template<class Thread >
bool mist::do_threads_ (Thread *threads, size_t num_threads, unsigned long dwMilliseconds=INFINITE)
 スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う
template<class Thread >
bool mist::do_threads_ (Thread **threads, size_t num_threads, unsigned long dwMilliseconds=INFINITE)
 スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う
template<class Thread >
bool mist::do_threads (Thread *threads, size_t num_threads, unsigned long dwMilliseconds=INFINITE)
 スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う
template<class Param , class Functor >
thread_handle mist::create_thread (Param &param, Functor f)
 指定したスレッド関数を利用する,スレッドを作成する
template<class Param , class Functor >
void mist::create_threads (thread_handle *handles, Param *param, size_t num_threads, Functor f)
 指定したスレッド関数を利用する,スレッドを複数作成する
bool mist::close_thread (thread_handle &thread_)
 スレッドが使用していたリソースを開放する
bool mist::close_threads (thread_handle *handles, size_t num_threads)
 複数のスレッドが使用していたリソースを開放する
bool mist::wait_thread (thread_handle &thread_, unsigned long dwMilliseconds=INFINITE)
 スレッドが終了するか,タイムアウトが発生するまで待機する
bool mist::wait_threads (thread_handle *handles, size_t num_threads, unsigned long dwMilliseconds=INFINITE)
 複数のスレッドが使用していたリソースを開放する
template<class Param , class Functor >
bool mist::do_thread (Param &param, Functor f, unsigned long dwMilliseconds=INFINITE)
 スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う
template<class Param , class Functor >
bool mist::do_threads (Param *params, size_t num_threads, Functor f, unsigned long dwMilliseconds=INFINITE)
 スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う

説明

次のヘッダをインクルードする
#include <mist/thread.h>

関数

bool mist::close_thread ( thread_handle &  thread_)
inline

スレッドが使用していたリソースを開放する

スレッドを使用した後で,必ず呼び出す必要がある

引数
[in,out]thread_… スレッドオブジェクト
戻り値
true… リソースの開放に成功
false… リソースの開放に失敗

参照先 mist::thread_handle::close().

参照元 mist::do_thread().

bool mist::close_threads ( thread_handle *  handles,
size_t  num_threads 
)
inline

複数のスレッドが使用していたリソースを開放する

引数
[out]handles… スレッドオブジェクト
[in]num_threads… スレッド数
戻り値
true… 全てのリソースの開放に成功
false… 全てのリソースの開放に失敗

参照元 mist::do_threads().

template<class Param , class Functor >
thread_handle mist::create_thread ( Param &  param,
Functor  f 
)
inline

指定したスレッド関数を利用する,スレッドを作成する

引数
[in,out]param… スレッドの関数に渡すパラメータ
[in]f… 実行されるスレッド関数
戻り値
スレッドを管理する thread_handle オブジェクト
使用例
struct parameter{ ... 何らかのパラメータ ... }; // スレッド関数に渡すパラメータ(特に構造体である必要は無い)
void thread_function( const parameter &p ); // スレッド関数(内部で何らかの処理をする)
// これ以降でスレッドを作成する
parameter param[ 作成スレッド数 ];
mist::thread_handle t[ 作成スレッド数 ];
for( i = 0 ; i < 作成スレッド数 ; i++ )
{
パラメータに何らかの値を設定する
}
for( i = 0 ; i < 作成スレッド数 ; i++ )
{
// スレッドを作成する
t[ i ] = mist::create_thread( param[ i ], thread_function );
}
for( i = 0 ; i < 作成スレッド数 ; i++ )
{
// スレッドが終了するまで待ち続ける
mist::wait_thread( t[ i ] );
}
for( i = 0 ; i < 作成スレッド数 ; i++ )
{
// スレッドが使用していたリソースを開放する
mist::close_thread( t[ i ] );
}

参照先 mist::thread_handle::create().

参照元 mist::do_thread().

template<class Param , class Functor >
void mist::create_threads ( thread_handle *  handles,
Param *  param,
size_t  num_threads,
Functor  f 
)
inline

指定したスレッド関数を利用する,スレッドを複数作成する

引数
[out]handles… スレッドオブジェクト
[in,out]param… スレッドの関数に渡すパラメータ
[in]num_threads… スレッド数
[in]f… 実行されるスレッド関数

参照先 mist::thread_handle::create().

参照元 mist::do_threads().

template<class Param , class Functor >
bool mist::do_thread ( Param &  param,
Functor  f,
unsigned long  dwMilliseconds = INFINITE 
)
inline

スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う

引数
[in,out]param… スレッドの関数に渡すパラメータ
[in]f… 実行されるスレッド関数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… スレッドの実行に成功
false… スレッドの実行に失敗

参照先 mist::close_thread(), mist::create_thread(), と mist::wait_thread().

template<class Thread >
bool mist::do_threads ( Thread *  threads,
size_t  num_threads,
unsigned long  dwMilliseconds = INFINITE 
)
inline

スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う

引数
[in]threads… スレッドオブジェクト
[in]num_threads… スレッド数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… 複数のスレッドの実行に成功
false… 複数のスレッドの実行に失敗

参照元 mist::fusion(), mist::nearest::interpolate(), mist::mean::interpolate(), mist::linear::interpolate(), mist::cubic::interpolate(), mist::BSpline::interpolate(), と mist::sinc::interpolate().

template<class Param , class Functor >
bool mist::do_threads ( Param *  params,
size_t  num_threads,
Functor  f,
unsigned long  dwMilliseconds = INFINITE 
)
inline

スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う

引数
[in,out]params… スレッドの関数に渡すパラメータ
[in]num_threads… スレッド数
[in]f… 実行されるスレッド関数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… 複数のスレッドの実行に成功
false… 複数のスレッドの実行に失敗

参照先 mist::close_threads(), mist::create_threads(), と mist::wait_threads().

template<class Thread >
bool mist::do_threads_ ( Thread *  threads,
size_t  num_threads,
unsigned long  dwMilliseconds = INFINITE 
)
inline

スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う

引数
[in]threads… スレッドオブジェクト
[in]num_threads… スレッド数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… 複数のスレッドの実行に成功
false… 複数のスレッドの実行に失敗

参照元 mist::closing(), mist::dilation(), mist::saito::distance_transform(), mist::calvin::distance_transform(), mist::meijster::distance_transform(), mist::erosion(), mist::linear::filter(), mist::linear::filter1d(), mist::saito::inverse_distance_transform(), mist::median(), mist::mip(), mist::mode(), mist::opening(), mist::volumerendering(), と mist::calvin::voronoi_distance_transform().

template<class Thread >
bool mist::do_threads_ ( Thread **  threads,
size_t  num_threads,
unsigned long  dwMilliseconds = INFINITE 
)
inline

スレッド生成・終了待機・スレッドの破棄までを一連の流れとして行う

引数
[in]threads… スレッドオブジェクト
[in]num_threads… スレッド数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… 複数のスレッドの実行に成功
false… 複数のスレッドの実行に失敗
size_t mist::get_cpu_num ( )
inline
bool mist::wait_thread ( thread_handle &  thread_,
unsigned long  dwMilliseconds = INFINITE 
)
inline

スレッドが終了するか,タイムアウトが発生するまで待機する

タイムアウトを INFINITE に設定することで,スレッドが終了するまで待ち続ける

引数
[in,out]thread_… スレッドオブジェクト
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… スレッドがタイムアウト時間内に正常終了した場合
false… スレッドがタイムアウト時間内に終了しなかった場合

参照先 mist::thread_handle::wait().

参照元 mist::do_thread().

bool mist::wait_threads ( thread_handle *  handles,
size_t  num_threads,
unsigned long  dwMilliseconds = INFINITE 
)
inline

複数のスレッドが使用していたリソースを開放する

引数
[out]handles… スレッドオブジェクト
[in]num_threads… スレッド数
[in]dwMilliseconds… タイムアウト時間(ミリ秒単位)
戻り値
true… 複数のスレッドがタイムアウト時間内に正常終了した場合
false… 複数のスレッドがタイムアウト時間内に終了しなかった場合

参照元 mist::do_threads().


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