Simple lock up with delay + semaphore - not fixed with 0006576
andreas.raab at gmx.de
Sat Jan 5 08:43:20 UTC 2008
Tom Phoenix wrote:
> Is that the source in your image for that method? Here's what I have:
> waitTimeoutMSecs: anInteger
> "Wait on this semaphore for up to the given number of milliseconds,
> then timeout. It is up to the sender to determine the difference
> between the expected event and a timeout."
> | waitingProcess wakeupProcess |
> waitingProcess _ Processor activeProcess.
> wakeupProcess _
> [(Delay forMilliseconds: (anInteger max: 0)) wait.
> self resumeProcess: waitingProcess] fork.
> self wait.
> wakeupProcess terminate.
How odd. It seems that this version is only present in 3.9 - all other
images have a variant of the (much simpler) code:
"Wait on this semaphore for up to the given number of milliseconds,
then timeout. It is up to the sender to determine the difference between
the expected event and a timeout."
| d |
d := Delay timeoutSemaphore: self afterMSecs: (anInteger max: 0).
[self wait] ensure:[d unschedule].
The 3.9 version is tagged "jf 12/2/2003" but there is no indication what
it is trying to address (if anything).
More information about the Squeak-dev