[squeak-dev] Fixing Semaphore and SharedQueue

Levente Uzonyi leves at elte.hu
Sun Nov 7 15:47:36 UTC 2010


Hi,

I uploaded two packages to the Inbox.
Collections-ul.404 is an attempt to fix SharedQueue, so the image can 
survive the following test:

bad := [[Sensor flushNonKbdEvents] repeat] forkAt: Processor userBackgroundPriority.
bad2 := [[Sensor eventQueue peek] repeat] forkAt: Processor userBackgroundPriority.

If the image doesn't freeze in a few seconds, terminate both processes.

The fix seems to be working, but it's incomplete and there are several 
other issues in SharedQueue.

I see three possible solutions:
- fix SharedQueue
- migrate to SharedQueue2 and fix possible issues in Monitor
- migrate to Igor's atomic queue and solve any possible problems

Currently if a process is terminated during a queue operation, the queue 
may break. This also true for SharedQueue2, because it uses Monitor >> 
#critical:.

I also uploaded some fixes to Semaphore which can be found in 
Kernel-ul.514. Most affected methods don't have senders in the image, so 
it's hard to test them. I'd like to ask you to review the code and give 
feedback.


Cheers,
Levente



More information about the Squeak-dev mailing list