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