lang

動作モード

Tonyu2には「待機可能モード」と「待機不能モード」という2つの動作モードがあります.

待機可能モード

待機可能モードで動作している間は,updateなどの,途中で動作を中断する(つまり,プログラムの動作を待機状態にする)メソッド(これを「待機系メソッド」と呼びます)が呼ばれたときに,一旦処理を中断し,描画や入力状態の更新などの処理を行います.

あるメソッドが待機可能モードで動作する条件として,次のものがあります。

待機不能モード

上で述べた条件にあてはまらない場合,「待機不能モード」で動作します.
待機不能モードでは,待機系メソッドが呼ばれても,途中で動作を中断しません.例えば,待機不能モード中にupdateメソッドが呼ばれても,待機動作を行いません.

待機不能メソッド

待機可能モードでは,待機不能モードより動作が遅くなることがあります.そこで,待機系メソッドが呼び出されないことが明らかな場合,必ず待機不能モードで動作したほうが効率がよくなります.このようなメソッドを「待機不能メソッド」と呼びます.

待機不能メソッドは,メソッドの定義の先頭にnowaitキーワードを追加して定義します.

nowait \myNoWaitMethod(arg1,arg2) {

}

現在の動作が待機可能モードか待機不能モードかを判別する

待機可能モード時は_threadという変数に現在のスレッドが格納されています。待機不能モード時はこの値はnullです。


method1();        //待機可能モードで動作
a=method1();      //待機可能モードで動作
a=10+method1();   //待機不能モードで動作
other.method1();  //待機不能モードで動作
method2();        //待機不能モードで動作

\method1() {
   for (i=0 ; i<20 ; i++) {
      x++;
      if (_thread) { /*待機可能モード時はここが実行される*/ }
      else { /*待機不能モード時はここが実行される*/ }
      update(); // 待機可能モードなら,ここで待機する
   }
   return x;
}
nowait \method2() {
   for (i=0 ; i<20 ; i++) {
      x--;
      update(); // ここでは待機しない
   }
}

待機系メソッド一覧

Backlink