WideStudio/MWT Class Reference

WideStudio/MWT Home
Up to


クラスの型

WSDthread

メソッド関数仕様



getNewInstance() 関数の説明

書式
WSDthread* WSDthread::getNewInstance()
機能
WSDthread インスタンスを取得します。 WSDthread インスタンスは、new 演算子で生成せず、 この getNewInstance() メンバ関数で生成します。
処理
引数
なし。
返値
WSDthread インスタンスへのポインタ
注意
この関数はスタティック関数です。
サンプル
createThread() を参照してください。



createThread 関数の説明

書式
long createThread(void* data)
機能
スレッドを生成します。 あらかじめ setFunction() メンバ関数により、 生成したスレッド上で実行する関数を指定しておきます。
処理
引数
(in)void* data 生成スレッドに引き渡されるパラメータ
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
WSthreadProc は次の様に定義されています。
typedef void* (*WSthreadProc)(WSDthread*,void*);
下記の例では、例えば、イベントプロシージャ sample_event_procedure() が WSCvbtn の様なもので起動された場合、 thread_proc() がサブスレッドとして起動されます。 一度スレッドを生成し、 detachThread () を呼びださない場合、 joinThread()メソッドが呼び出され、 スレッドを修了待ちするまでの間、 新たな createThread() は実行できません。
サンプル
void* thread_proc(WSDthread* thr,void* data){
  //スレッドで処理...
  return NULL;
}
void sample_event_procedure(WSCbase* object){
  //スレッドインスタンスを生成
  WSDthread* thr = WSDthread::getNewInstance();

  //スレッドとして起動する関数を設定。
  thr->setFunction(thread_proc);

  //スレッドを生成
  thr->createThread(NULL);
}



joinThread 関数の説明

書式
long joinThread(void** ptr);
機能
生成したスレッドの終了を待ちます。
処理
引数
(out)void** ptr スレッドの終了ステータスを格納するポインタ
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
スレッドの実行が終了している場合、エラーがかえされます。
サンプル
void* thread_proc(WSDthread* thr,void* data){
  //スレッドで処理...
  return NULL;
}
void sample_event_procedure(WSCbase* object){
  //スレッドインスタンスを生成
  WSDthread* thr = WSDthread::getNewInstance();

  //スレッドとして起動する関数を設定。
  thr->setFunction(thread_proc);

  //スレッドを生成
  thr->createThread(NULL);

  //スレッドの終了を待つ
  void* return_value;
  thr->joinThread(&return_value);
}



terminateThread 関数の説明

書式
long terminateThread()
機能
実行中のスレッドを強制的に停止します。
処理
引数
なし。
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
サンプル
void* thread_proc(WSDthread* thr,void* data){
  //スレッドで処理...
  return NULL;
}
void sample_event_procedure(WSCbase* object){
  //スレッドインスタンスを生成
  WSDthread* thr = WSDthread::getNewInstance();

  //スレッドとして起動する関数を設定。
  thr->setFunction(thread_proc);

  //スレッドを生成
  thr->createThread(NULL);

  //実行状態を取得
  long status = thr->getStatus();

  if (status == WS_THREAD_RUNNING){
    //スレッドを強制的に終了。
    thr->terminateThread();
  }
}



getStatus 関数の説明

書式
long getStatus()
機能
スレッドの実行状態を取得します。
処理
引数
なし。
返値
WS_THREAD_STOPPED = スレッド非実行中、WS_THREAD_RUNNING =スレッド実行中。
注意
サンプル
terminateThread() を参照してください。



setFunction 関数の説明

書式
void setFunction(WSthreadProc func)
機能
スレッドの生成時に起動する関数を指定します。
処理
引数
(in)WSthreadProc data スレッド生成時に起動する関数
返値
なし。
注意
WSthreadProc は次の様に定義されています。
typedef void* (*WSthreadProc)(WSDthread*,void*);
下記の例では、例えば、イベントプロシージャ sample_event_procedure() が WSCvbtn の様なもので起動された場合、 thread_proc() がサブスレッドとして起動されます。
サンプル
createThread を参照してください。



setCallbackFunction 関数の説明

書式
void setCallbackFunction(WSthreadCallbackProc func)
機能
サブスレッドからメインスレッド上でコールバック関数を起動する 際のコールバック関数を指定します。
処理
引数
(in)WSthreadCallbackProc data 起動する関数
返値
なし。
注意
WSthreadCallbackProc は次の様に定義されています。
typedef void (*WSthreadCallbackProc)(WSDthread*,void*);
下記の例では、例えば、サブスレッドイベントプロシージャ thread_proc からメインスレッド上で動作するコールバック関数 callback_proc を起動する例です。
サンプル
void* thread_proc(WSDthread* thr,void* data){
  //スレッドで処理...

  thr->execCallback(NULL);
  return NULL;
}
void callback_proc(WSDthread* thr,void* data){
  //メインスレッドで処理...
  return;
}
void sample_event_procedure(WSCbase* object){
  //スレッドインスタンスを生成
  WSDthread* thr = WSDthread::getNewInstance();

  //スレッドとして起動する関数を設定。
  thr->setFunction(thread_proc);

  //メインスレッドで動作するしコールバック関数を設定。
  thr->setCallbackFunction(callback_proc);

  //スレッドを生成
  thr->createThread(NULL);
}



execCallback 関数の説明

書式
long execCallback(void* data)
機能
サブスレッドからメインスレッド上で動作する コールバック関数を起動します。
処理
引数
(in)void* data 起動する関数に引き渡すポインタ
返値
なし。
注意
WSthreadCallbackProc は次の様に定義されています。
typedef void (*WSthreadCallbackProc)(WSDthread*,void*);
サンプル
setCallbackFunction() を参照してください。


Document Release 3.90

For Use with WideStudio/MWT Release 3.90, Summer 2005


WideStudio/MWT Home | Up to

Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: June 25, 2005