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

Reply via email to