Hi folks! I am doing some benchmarks and I having problems with fork (I think).<br><br>I have this method collect:<br><br>collect<br>|semaphores tr|<br>semaphores := Array new: 10.<br>tr := ThreadSafeTranscript new.<br>tr open.<br>
1 to: 10 do: [ :index | semaphores at: index put: Semaphore forMutualExclusion ].<br><br>    1 to: 10 do: [:i |<br>        [<br>        tr show: &#39;one fork&#39;; cr.<br>        (semaphores at: i) signal.<br>        ] fork      <br>
    ].<br><br>    semaphores do: [:each | each wait ].<br>    tr show: &#39;all forks proccesed&#39;; cr.<br>    <br><br>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&#39;t do a transcript show: but another thing. <br>
<br>I would expect something like this:<br><br>
one fork<br>one fork<br>
one fork<br>
one fork<br>
one fork<br>one fork<br>
one fork<br>
one fork<br>
one fork<br>one fork<br>all forks proccesed<br><br>But the output is:<br><br><br>all forks proccesed<br>one fork<br>one fork<br>one fork<br>one forkone fork<br>one fork<br>one fork<br>one forkone fork<br>one fork<br>one fork<br>
one forkone fork<br><br>So, I guess it isn&#39;t working :(   I don&#39;t know too much about forks so any help is welcome!<br><br>can be a problem with  ThreadSafeTranscript  ? If so, how could I test if my code is working as expected ?<br>
<br>Thanks,<br><br>Mariano<br><br>