--- a/Semaphore.st Tue Nov 30 15:53:23 2010 +0000
+++ b/Semaphore.st Mon Dec 20 07:13:27 2010 +0000
@@ -366,7 +366,7 @@
waitingProcesses isNil ifTrue:[
waitingProcesses := Array with:aProcess
] ifFalse:[
- waitingProcesses class == Array ifTrue:[
+ waitingProcesses isArray ifTrue:[
waitingProcesses := OrderedCollection withAll:waitingProcesses.
].
waitingProcesses add:aProcess.
@@ -413,13 +413,14 @@
NOTE: Must be called when known that waitingProcesses is nonNil and
also with blocked interrupts"
- |q|
+ |processes|
- q := waitingProcesses.
- waitingProcesses := nil.
+ processes := waitingProcesses.
+"/ do not set to nil - a waiting process may be suspended and will not be resumed...
+"/ waitingProcesses := nil.
"/ todo: resume by priority; higher first.
- q do:[:each | Processor resume:each].
+ processes do:[:eachProcess | Processor resume:eachProcess].
! !
!Semaphore methodsFor:'private-accessing'!
@@ -540,7 +541,7 @@
|wasBlocked|
- waitingProcesses size ~~ 0 ifTrue:[
+ waitingProcesses notNil ifTrue:[
wasBlocked := OperatingSystem blockInterrupts.
[
|processes|
@@ -549,11 +550,13 @@
(in case one has higher prio and goes into a wait immediately again.)"
processes := waitingProcesses.
- waitingProcesses := nil.
- processes do:[:eachWaitingProcess|
- count := count + 1.
- Processor makeRunnable:eachWaitingProcess.
- ].
+ processes size ~~ 0 ifTrue:[
+ waitingProcesses := nil.
+ processes do:[:eachWaitingProcess|
+ count := count + 1.
+ Processor makeRunnable:eachWaitingProcess.
+ ].
+ ].
] ensure:[
wasBlocked ifFalse:[OperatingSystem unblockInterrupts].
].
@@ -920,17 +923,18 @@
!Semaphore class methodsFor:'documentation'!
version
- ^ '$Id: Semaphore.st 10590 2010-11-09 16:24:28Z vranyj1 $'
+ ^ '$Id: Semaphore.st 10602 2010-12-20 07:13:27Z vranyj1 $'
!
version_CVS
- ^ 'Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.83 2010-02-05 12:58:06 cg Exp '
+ ^ 'Header: /cvs/stx/stx/libbasic/Semaphore.st,v 1.84 2010/11/30 13:13:46 stefan Exp '
!
version_SVN
- ^ '$Id: Semaphore.st 10590 2010-11-09 16:24:28Z vranyj1 $'
+ ^ '$Id: Semaphore.st 10602 2010-12-20 07:13:27Z vranyj1 $'
! !
+