Fixing Semaphore and SharedQueue

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fixing Semaphore and SharedQueue

Levente Uzonyi-2
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