メインページ   名前空間一覧   クラス階層   アルファベット順一覧   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

クラス テンプレートKSCL::CFuncThread< type_class > の解説

・特定のメンバ関数を別スレッドとして呼び出すためのクラスです。. より詳しく...

KSCL::CFuncThreadに対する継承グラフ

Inheritance graph
[凡例]
KSCL::CFuncThread< type_class >のコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

公開型

typedef DWORD(type_class::* type_pmfn )(void *)
 メンバ関数ポインタの型定義。. より詳しく...


公開メンバ

 CFuncThread (const type_class &p_rcClass, type_pmfn p_pmfn)
 ・コンストラクタ。. より詳しく...

virtual ~CFuncThread ()
 ・デストラクタ。. より詳しく...

virtual void Call (void *p_pv)
 ・実際にメンバ関数を呼び出します。. より詳しく...


非公開メンバ

virtual DWORD Runner (LPVOID p_pv)
 別スレッドとして実行されるメンバ関数。. より詳しく...


非公開属性

const type_class & m_rcClass
 呼び出すクラスへの参照。. より詳しく...

type_pmfn m_pmfn
 呼び出すメンバ関数へのポインタ。. より詳しく...


解説

template<class type_class>
class KSCL::CFuncThread< type_class >

・特定のメンバ関数を別スレッドとして呼び出すためのクラスです。.

 普通、スレッドは普通の関数や static メンバ関数しか呼び出せません。
 そこで、このクラスではメンバ関数を別スレッドとして呼び出します。
 使い方は、

1:まずこのクラスの変数を作ります。
 テンプレート引数は呼び出すメンバ関数が所属するクラスです。
 コンストラクタには、呼び出すメンバ関数を持つクラスのインスタンスと、実際に呼び出してもらうメンバ関数へのポインタを渡してください。
 ただし、メンバ関数は CFuncThread::type_pmfn 型である必要があります。
2:Call() を呼ぶ。
 Call() を呼ぶことで、先ほど登録したメンバ関数が呼び出されます。
 第1引数は void * です。このポインタが、登録したメンバ関数の引数として渡されます。

 という手順です。
 仕組み的にはデリゲートだと思ってもらえればと思います。

引数:
type_class  呼び出したいメンバ関数を持つクラス。


メンバ型定義の解説

template<class type_class>
typedef DWORD(type_class::* KSCL::CFuncThread< type_class >::type_pmfn)( void * )
 

メンバ関数ポインタの型定義。.


コンストラクタとデストラクタの解説

template<class type_class>
KSCL::CFuncThread< type_class >::CFuncThread const type_class &    p_rcClass,
type_pmfn    p_pmfn
[inline]
 

・コンストラクタ。.

 初期化します。

引数:
p_rcClass  メンバ関数を持つクラスのインスタンス。
p_pmfn  呼び出したいメンバ関数へのポインタ。

template<class type_class>
virtual KSCL::CFuncThread< type_class >::~CFuncThread   [inline, virtual]
 

・デストラクタ。.

 特に何もしませんが、親クラスの方で色々するはずです。


メンバ関数の解説

template<class type_class>
virtual void KSCL::CFuncThread< type_class >::Call void *    p_pv [inline, virtual]
 

・実際にメンバ関数を呼び出します。.

 コンストラクタで登録したメンバ関数を呼び出します。

引数:
p_pv  登録したメンバ関数に渡すポインタ。

template<class type_class>
virtual DWORD KSCL::CFuncThread< type_class >::Runner LPVOID    p_pv [inline, private, virtual]
 

別スレッドとして実行されるメンバ関数。.

 親クラスのオーバーライドです。だから親クラスから呼ばれます。

戻り値:
GetExitCodeThread() で取得できる値。
引数:
p_pv  スレッド関数に渡されるポインタ値。

KSCL::CThreadを実装しています.


メンバの解説

template<class type_class>
const type_class& KSCL::CFuncThread< type_class >::m_rcClass [private]
 

呼び出すクラスへの参照。.

template<class type_class>
type_pmfn KSCL::CFuncThread< type_class >::m_pmfn [private]
 

呼び出すメンバ関数へのポインタ。.


KSCL(KAB-studioClassLibrary)に対してThu Jun 12 09:55:44 2003に生成されました。 doxygen1.2.15