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
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project