On 2012-11-02, at 19:24, Sebastian Nozzi <[email protected]> wrote: > Thanks! > > Didn't know it was so simple... I was kind of intimidated by "wait". Thought, > well, that it suspended the thread no matter what. > > Another question, out of curiosity: > > Is it possible to have one thread wait for 2 other threads to finish? Would > it also be solved with Semaphores like this? > > s1 := Semaphore forMutualExclusion. > s2 := Semaphore forMutualExclusion. > [ s1 wait. do stuff .... s1 signal] fork. > [ s2 wait. do stuff ..... s2 signal ] fork. > > s1 wait. > s2 wait. > "Here we are sure the two other processes finished, kind of..." > > Or is there a more "friendly" way? :-) > > Thanks again! > > Sebastian
Looks okay to me. But you could make it a bit simpler: s1 := Semaphore new. s2 := Semaphore new. [ do stuff .... s1 signal] fork. [ do stuff ..... s2 signal] fork. s1 wait. s2 wait. Or even: s1 := Semaphore new. [ do stuff .... s1 signal] fork. [ do stuff ..... s1 signal] fork. s1 wait; wait. - Bert - > >> You could use a Semaphore directly: >> >> semaphore := Semaphore forMutualExclusion. >> >> and then >> >> semaphore wait "acquire lock" >> ... >> semaphore signal "release lock" >> >>> I am aware or Monitor/Mutex critical:, but I am not sure I can use it in my >>> case. >> >> >> Semaphore>>critical: simply does a wait and signal like above. But it >> ensures that if something goes wrong the semaphore is still signaled, so >> it's more easy to use. >> >> - Bert - _______________________________________________ Beginners mailing list [email protected] http://lists.squeakfoundation.org/mailman/listinfo/beginners
