--- a/RecursionLock.st Sat Dec 16 13:54:22 1995 +0100
+++ b/RecursionLock.st Sat Dec 16 14:01:20 1995 +0100
@@ -12,10 +12,10 @@
Object subclass:#RecursionLock
- instanceVariableNames:'process sema'
- classVariableNames:''
- poolDictionaries:''
- category:'Kernel-Processes'
+ instanceVariableNames:'process sema'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Kernel-Processes'
!
!RecursionLock class methodsFor:'documentation'!
@@ -44,17 +44,30 @@
example:
- |lock|
+ |lock|
+
+ lock := RecursionLock new.
+ lock critical:[
+ Transcript showCr:'in lock ...'.
+ lock critical:[
+ Transcript showCr:'again ...'
+ ]
+ ]
+
+ in contrast to (wrong example):
- lock := RecursionLock new.
- lock critical:[
- Transcript showCr:'in lock ...'.
- lock critical:[
- Transcript showCr:'again ...'
- ]
- ]
+ |lock|
+
+ lock := Semaphore forMutualExclusion.
+ lock critical:[
+ Transcript showCr:'in lock ...'.
+ lock critical:[
+ '*** never reached - deadlock because sema is already locked ***'.
+ ' (press CTRL-c and abort in the debugger)'.
+ Transcript showCr:'again ...'
+ ]
+ ]
"
-
! !
!RecursionLock class methodsFor:'instance creation'!
@@ -96,5 +109,5 @@
!RecursionLock class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.6 1995-12-07 21:30:23 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.7 1995-12-16 13:01:20 cg Exp $'
! !