process.st

来自「四皇后问题」· ST 代码 · 共 45 行

ST
45
字号
Class  Process

[  block
	(self state == #TERMINATED)
	    ifTrue: [self termErr: 'block'.  ^ nil].
	<SetProcessState  self 2>.
	^ self state

|  resume
	(self state == #TERMINATED)
	    ifTrue: [self termErr: 'resume'.  ^ nil].
	<SetProcessState  self 0>.
	^ self state

|  suspend
	(self state == #TERMINATED)
	    ifTrue: [self termErr: 'suspend'.  ^ nil].
	<SetProcessState  self 1>.
	^ self state

|  state  | pstate |
	pstate <- <ReturnProcessState  self>.
	(pstate = 0) ifTrue: [pstate <- #READY.  ^ pstate].
	(pstate = 1) ifTrue: [pstate <- #SUSPENDED.  ^ pstate].
	(pstate = 2) ifTrue: [pstate <- #BLOCKED.  ^ pstate].
	(pstate = 3) ifTrue: [pstate <- #BLOCKED.  ^ pstate].
	(pstate >= 4) ifTrue: [pstate <- #TERMINATED.  ^ pstate]

|  terminate
	<Terminate self>.
	^ self state

|  termErr: msgName
	('Cannot ',msgName,' a terminated process.') print

|  unblock
	(self state == #TERMINATED)
	    ifTrue: [self termErr: 'unblock'.  ^ nil].
	<SetProcessState  self 3>.
	^ self state

|  yield
	^ nil
]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?