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: 'one fork'; cr.<br> (semaphores at: i) signal.<br> ] fork <br>
].<br><br> semaphores do: [:each | each wait ].<br> tr show: 'all forks proccesed'; 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'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't working :( I don'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>