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 起動する関数に引き渡すポインタ
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
WSthreadCallbackProc は次の様に定義されています。
typedef void (*WSthreadCallbackProc)(WSDthread*,void*);
サンプル
setCallbackFunction() を参照してください。



getThreadId 関数の説明

書式
long getThreadId()
機能
インスタンスが保持しているサブスレッドのスレッドIDを取得します。
処理
引数
なし。
返値
サブスレッドのスレッドID
注意
サンプル



getCurrentThreadId 関数の説明

書式
static long getCurrentThreadId()
機能
現在実行中の自スレッドのスレッドIDを取得します。
処理
引数
なし。
返値
現在実行中の自スレッドID
注意
サンプル
  long tid = WSDthread::getCurrentThreadId();



sleep 関数の説明

書式
static long sleep(long ms)
機能
指定された時間(ms)だけスリープします。
処理
引数
(in)long ms スリープ時間(ミリ秒)
返値
WS_NO_ERR= 正常、それ以外はエラー。
注意
サンプル
   WSDthread::sleep(1000);//1秒スリープ


Document Release 3.98

For Use with WideStudio/MWT Release 3.98, Summer 2008


WideStudio/MWT Home | Up to

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