- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

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

## データ構造
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

利用可能なCPU数を取得する

Windowsの場合は GetSystemInfo 関数を利用してCPU数を取得する． Linux系の場合は，sysconf 関数を利用してCPU数を取得する．

戻り値
  利用可能なCPU数

参照元 mist::non_rigid::registration< TARGETTYPE >::apply(), 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::fusion(), mist::nearest::interpolate(), mist::mean::interpolate(), mist::linear::interpolate(), mist::cubic::interpolate(), mist::BSpline::interpolate(), mist::sinc::interpolate(), mist::saito::inverse_distance_transform(), mist::median(), mist::mip(), mist::mode(), mist::opening(), mist::volumerendering(), と mist::calvin::voronoi_distance_transform().

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().