KSCL::CFuncThreadに対する継承グラフ
公開型 | |
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 |
呼び出すメンバ関数へのポインタ。. より詳しく... |
普通、スレッドは普通の関数や static メンバ関数しか呼び出せません。
そこで、このクラスではメンバ関数を別スレッドとして呼び出します。
使い方は、
1:まずこのクラスの変数を作ります。
テンプレート引数は呼び出すメンバ関数が所属するクラスです。
コンストラクタには、呼び出すメンバ関数を持つクラスのインスタンスと、実際に呼び出してもらうメンバ関数へのポインタを渡してください。
ただし、メンバ関数は CFuncThread::type_pmfn 型である必要があります。
2:Call() を呼ぶ。
Call() を呼ぶことで、先ほど登録したメンバ関数が呼び出されます。
第1引数は void * です。このポインタが、登録したメンバ関数の引数として渡されます。
という手順です。
仕組み的にはデリゲートだと思ってもらえればと思います。
type_class | 呼び出したいメンバ関数を持つクラス。 |
|
メンバ関数ポインタの型定義。.
|
|
・コンストラクタ。. 初期化します。
|
|
・デストラクタ。. 特に何もしませんが、親クラスの方で色々するはずです。 |
|
・実際にメンバ関数を呼び出します。. コンストラクタで登録したメンバ関数を呼び出します。
|
|
別スレッドとして実行されるメンバ関数。. 親クラスのオーバーライドです。だから親クラスから呼ばれます。
KSCL::CThreadを実装しています. |
|
呼び出すクラスへの参照。.
|
|
呼び出すメンバ関数へのポインタ。.
|