Wide Studio Object Reference

Wide Studio 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() がサブスレッドとして起動されます。
サンプル

      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 関数の説明

  書式
    long setFunction(WSthreadProc func)
  機能
    スレッドの生成時に起動する関数を指定します。
  処理
  引数

    (in)WSthreadProc data | スレッド生成時に起動する関数

  返値
    なし。
  注意
    WSthreadProc は次の様に定義されています。
    typedef void* (*WSthreadProc)(WSDthread*,void*);
    下記の例では、例えば、イベントプロシージャ sample_event_procedure() が WSCvbtn の様なもので起動された場合、 thread_proc() がサブスレッドとして起動されます。
  サンプル
    createThread を参照してください。

  ### setCallbackFunction 関数の説明

  書式
    long 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 NULL;
        }
        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.70
  For Use with Wide Studio Release 3.70, Spring 2004

  WideStudio Home | Up to

  Copyright(C) WideStudio Development Team, 1999-2004 |  | Last modified: May. 25, 2004