On 2012-11-02, at 18:42, Sebastian Nozzi sebnozzi@gmail.com wrote:
Hello Dear Squeakers,
threads and co. are giving me headaches :-) I wanted to ask for advice...
What do I use in Squeak to prevent more than one thread entering a region, but "releasing" the exclusivity in another block/callback? For example, let's suppose there is an hypothetical class "Lock" that does that.
lock acquire. longOperation performWhenFinished: [ callback code ... lock release ]. ... rest of the program ...
Is there something like that? Or do I have to simulate it with something else? (Semaphore?)
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 -