home *** CD-ROM | disk | FTP | other *** search
/ Really Useful CD 1 / ReallyUsefulCD1.iso / extras / languages / smalltalk / _smalltalk / prelude / process < prev    next >
Encoding:
Text File  |  1987-12-30  |  1.1 KB  |  45 lines

  1. Class  Process
  2.  
  3. [  block
  4.      (self state == #TERMINATED)
  5.          ifTrue: [self termErr: 'block'.  ^ nil].
  6.      <SetProcessState  self 2>.
  7.      ^ self state
  8.  
  9. |  resume
  10.      (self state == #TERMINATED)
  11.          ifTrue: [self termErr: 'resume'.  ^ nil].
  12.      <SetProcessState  self 0>.
  13.      ^ self state
  14.  
  15. |  suspend
  16.      (self state == #TERMINATED)
  17.          ifTrue: [self termErr: 'suspend'.  ^ nil].
  18.      <SetProcessState  self 1>.
  19.      ^ self state
  20.  
  21. |  state  | pstate |
  22.      pstate <- <ReturnProcessState  self>.
  23.      (pstate = 0) ifTrue: [pstate <- #READY.  ^ pstate].
  24.      (pstate = 1) ifTrue: [pstate <- #SUSPENDED.  ^ pstate].
  25.      (pstate = 2) ifTrue: [pstate <- #BLOCKED.  ^ pstate].
  26.      (pstate = 3) ifTrue: [pstate <- #BLOCKED.  ^ pstate].
  27.      (pstate >= 4) ifTrue: [pstate <- #TERMINATED.  ^ pstate]
  28.  
  29. |  terminate
  30.      <Terminate self>.
  31.      ^ self state
  32.  
  33. |  termErr: msgName
  34.      ('Cannot ',msgName,' a terminated process.') print
  35.  
  36. |  unblock
  37.      (self state == #TERMINATED)
  38.          ifTrue: [self termErr: 'unblock'.  ^ nil].
  39.      <SetProcessState  self 3>.
  40.      ^ self state
  41.  
  42. |  yield
  43.      ^ nil
  44. ]
  45.