$B<B9T>uBV$NHsF14|0\Aw$KBP1~$7$?<B9T;~%3%s%Q%$%i(B
$B%M%$%F%#%V%3!<%I$N<B9T$r5v$90[5!<o4VHsF14|<B9T>uBV0\AwJ}<0(B

- externalize $B$@$1$G$J$/!"(Binternalize $B$b9M$($kI,MW$,$"$k!#(B
  $B%$%s%?%W%j%?>e$N<B9T>uBV$+$i!"%M%$%F%#%V%3!<%I$N<B9T>uBV$r:n$j=P$9I,MW$"$j!#(B


MobaThread#suspend() {
  suspendReq = true;
  try {
    synchronized (suspendCond) {
      suspendCond.wait();
    }
  } catch (InterruptedException e) {}
}

MobaThread#resume() {
  $B%$%s%?%W%j%?>e$N%9%?%C%/$r%/%j%"(B;
  synchronized (resumeCond) {
    resumeCond.notify();
  }
}

opc_suspend_check:
  if (current_thread.suspendReq) {
    $B%$%s%?%W%j%?>e$K<B9T>uBV$r%3%T!<(B;
    current_thread.suspendReq = false;
    current_thread.suspendCond.notifyAll();

    try {
      synchronized (resumeCond) {
        resumeCond.wait();
      }
    } catch (InterruptedException e) {}
  }
