home *** CD-ROM | disk | FTP | other *** search
/ ring.yamanashi.ac.jp/pub/pc/freem/action/ / action.zip / henkyaku1.0.exe / henkyaku / Program / Kernel / Util / TimeStopper.tonyu < prev    next >
Text File  |  2003-03-16  |  944b  |  42 lines

  1. extends Object;
  2.  
  3. constructor TimeStopper(owner) {
  4.    savePG=$curProcGroup;
  5.    savePG.interrupt();
  6.    PG=new ProcessGroup(savePG.chars);
  7.    PG.setCurrent();
  8.    joined=new LightHashtable();
  9.    release(owner);
  10. }
  11.  
  12. function releaseAll(nonKill) {
  13.    var i,p;
  14.    if (!nonKill) {
  15.      for (i=PG.procs.size()-1 ; i>=0 ; i--) {
  16.         p=PG.procs.get(i);
  17.         if (p && joined.get(p)==null) {
  18.            p.aobj.die();
  19.            p.kill();
  20.         }
  21.      }
  22.    } else {
  23.      for (i=PG.procs.size()-1 ; i>=0 ; i--) {
  24.         p=PG.procs.get(i);
  25.         if (joined.get(p)==null) {
  26.            savePG.procs.add(p);
  27.         }
  28.      }
  29.    }
  30.    PG.interrupt();
  31.    savePG.setCurrent();
  32.    savePG.resumeInterrupt(); 
  33. }
  34.  
  35. function release(t) {
  36.   var p;
  37.   if (!(t is PlainChar)) return; 
  38.   p=t._pProc;
  39.   if (PG.procs.lightIndexOf(p)>=0) return; // a=appear(); release(a); é┼æ¼ôxéQö{ûhÄ~
  40.   PG.procs.add(p); 
  41.   joined.put(p,1); 
  42. }