[gclist] Mars Rover info from comp.risks

Hans Boehm boehm@hoh.mti.sgi.com
Tue, 6 Jan 1998 09:25:45 -0800

[This is a bit of an aside, but since this thread hasn't died, and GC seems to
be closely related to synchronization issues ...]

On Jan 6,  8:10am, Joshua W. Burton wrote:
> Subject: RE: [gclist] Mars Rover info from comp.risks
> > This scenario is a classic case of priority inversion.
> I'm trying to get on the expressway in my Yugo, and there's an
> ambulance screaming behind me.  But this convoy of Mack trucks
> won't let me on....
> Anybody with an ambulance screaming behind him should have his
> own siren.
The real problem is if the ambulance gets stuck behind a railroad crossing with
freight cars going by at a snail's pace and no sight of the locomotive.  You
have to be able to find and get in touch with whomever you're waiting for in
order to inherit priorities.

This seems to be a serious issue with these schemes.  Priority inheritance
works for locks, provided the lock tells you who the holder is, which can
occasionally be hard to arrange.  It doesn't work for condition variables,
since the threads implementation doesn't know who's waiting for whom.

The other alternative often is to make sure that everybody who can make
progress makes some reasonable progress.  In my experience that leads to more
reliable and responsive systems.  But my experience doesn't include hard
real-time systems.


Hans-Juergen Boehm