[squeak-dev] Problem with fork
Mariano Martinez Peck
marianopeck at gmail.com
Wed Jul 1 14:41:16 UTC 2009
Hi folks! I am doing some benchmarks and I having problems with fork (I
think).
I have this method collect:
collect
|semaphores tr|
semaphores := Array new: 10.
tr := ThreadSafeTranscript new.
tr open.
1 to: 10 do: [ :index | semaphores at: index put: Semaphore
forMutualExclusion ].
1 to: 10 do: [:i |
[
tr show: 'one fork'; cr.
(semaphores at: i) signal.
] fork
].
semaphores do: [:each | each wait ].
tr show: 'all forks proccesed'; cr.
What I want is that the method collect returns when ALL of the forks created
inside, are finished. Obviously in my real code, I don't do a transcript
show: but another thing.
I would expect something like this:
one fork
one fork
one fork
one fork
one fork
one fork
one fork
one fork
one fork
one fork
all forks proccesed
But the output is:
all forks proccesed
one fork
one fork
one fork
one forkone fork
one fork
one fork
one forkone fork
one fork
one fork
one forkone fork
So, I guess it isn't working :( I don't know too much about forks so any
help is welcome!
can be a problem with ThreadSafeTranscript ? If so, how could I test if my
code is working as expected ?
Thanks,
Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090701/ff88e807/attachment.htm
More information about the Squeak-dev
mailing list
|