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