[squeak-dev] Problem with fork

Mariano Martinez Peck marianopeck at gmail.com
Wed Jul 1 14:41:16 UTC 2009


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20090701/ff88e807/attachment.htm


More information about the Squeak-dev mailing list