home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / OThreads.def < prev    next >
Text File  |  1994-05-25  |  3KB  |  121 lines

  1. |##########|
  2. |#MAGIC   #|CKOLFLGN
  3. |#PROJECT #|""
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx---x--x---xxx-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|x----xxxxx-xx---
  9. |##########|
  10. DEFINITION MODULE OThreads;
  11.  
  12. IMPORT Exec,System,Resources,Dos;
  13. IMPORT OTrees,OLists;
  14. FROM System IMPORT LONGSET,Regs;
  15.  
  16. TYPE
  17.   Thread     = POINTER TO ThreadObj;
  18.   MinSig     = POINTER TO MinSigObj;
  19.  
  20.   DEFINITION MODULE Threads = OTrees.StdTrees(Thread);
  21.   DEFINITION MODULE TLists  = OLists.BiLists(MinSig);
  22.  
  23. TYPE
  24.   MinSigObj  = OBJECT OF TLists.Node;
  25.                  DEFERRED METHOD Wake;
  26.                END;
  27.  
  28.   ThreadObj  = OBJECT OF Threads.Tree,MinSig AS link;
  29.                  task       : Exec.TaskPtr;
  30.                  returnCode : LONGINT;
  31.  
  32.                  deadSignal : Exec.TaskSignals;
  33.                  deadMask   : Exec.TaskSigSet;
  34.  
  35.                  sigSignal  : Exec.TaskSignals;
  36.                  sigMask    : Exec.TaskSigSet;
  37.  
  38.                  tname      : STRING(64);
  39.  
  40.                  numSons    : INTEGER;
  41.  
  42.                  context    : Resources.ContextPtr;
  43.  
  44.                  CONSTRUCTOR Create(REF name : STRING := "";pri : INTEGER := 0);
  45.  
  46.                  METHOD Wait(ticks : INTEGER);
  47.  
  48.                  METHOD Break;
  49.                  DESTRUCTOR BreakAsynch;
  50.  
  51.                  METHOD Active():BOOLEAN;
  52.  
  53.                  METHOD Destruct;
  54.                  METHOD link.Wake;
  55.  
  56.                  DEFERRED METHOD Code;
  57.                END;
  58.  
  59.  
  60.  
  61. TYPE
  62.   Signal     = POINTER TO OBJECT OF TLists.List;
  63.                  CONSTRUCTOR Create;
  64.                  METHOD Wait;
  65.                  METHOD Send;
  66.                  METHOD Destruct;
  67.                END;
  68.  
  69.   SigNode    = POINTER TO SigNodeObj;
  70.  
  71.   DEFINITION MODULE SLists = OLists.BiLists(SigNode);
  72.  
  73. TYPE
  74.   SignalList = POINTER TO OBJECT OF SLists.List;
  75.                  CONSTRUCTOR Create(sigs : LIST OF Signal);
  76.                  METHOD Wait;
  77.                  task : MinSig;
  78.                END;
  79.  
  80.   SigNodeObj = OBJECT OF SLists.Node,MinSig AS link;
  81.                  signal  : Signal;
  82.                  list    : SignalList;
  83.                  METHOD link.Wake;
  84.                END;
  85.  
  86. EXCEPTION
  87.   SigListOccupied    : "Signallist occupied";
  88.   SemaphoreNotLocked : "Semaphore not locked";
  89.  
  90. TYPE
  91.   Semaphore  = POINTER TO OBJECT OF Signal;
  92.                  useCount : INTEGER;
  93.                  METHOD LockShared;
  94.                  METHOD LockExclusive;
  95.                  METHOD Release;
  96.                END;
  97.  
  98.   Rendezvouz = POINTER TO OBJECT OF Signal AS emitter,
  99.                                     Signal AS acceptor;
  100.                  METHOD accepts():BOOLEAN;
  101.  
  102.                  METHOD Accept;
  103.                  METHOD Emit;
  104.                END;
  105.  
  106.   Rendezvouz2= POINTER TO OBJECT OF Signal AS emitter,
  107.                                     Signal AS acceptor,
  108.                                     Signal AS sleeper,
  109.                                     Signal AS waker;
  110.                  METHOD accepts():BOOLEAN;
  111.  
  112.                  METHOD Accept;
  113.                  METHOD Emit;
  114.                  METHOD Reply;
  115.                END;
  116.  
  117. VAR ActiveThread : Thread;
  118.  
  119. END OThreads.
  120.  
  121.