From: geert@fozzie.sun3.iaf.nl (Geert Bosch)
Subject: Re: Fast locking (Was Re: Java vs Ada 95)
Date: 1996/11/06
Date: 1996-11-06T00:00:00+00:00 [thread overview]
Message-ID: <55r16k$m00@fozzie.sun3.iaf.nl> (raw)
In-Reply-To: 1996Nov5.235745.1@eisner
Larry Kilgallen writes:
`` My presumption is that those folks have portable Ada code in mind.
The machine semantics of test-and-set on whatever machine you are
describing would seem to be somewhat different from the Alpha AXP
load-locked/store-conditional semantics. A higher level construct
which supports portable programs seems better to me than something
specific to test-and-set hardware semantics. ''
The Systems Programming Annex of the RM specifically advises atomic
read-modify-write operations like test and set, compare and swap etc.
I can't imagine there are many systems around these days that do not
provide efficient test-and-set semantics. Even the 8088 processor that
does not directly have a test-and-set instruction can easily emulate
one by doing an atomic swap between a processor register and a memory
location. On very simple processors it is almost always possible to
block all interrupts while doing the test-and-set.
Of course machines that do not have any instructions that can be used
to efficiently implement hardware-assisted locking will not have a
test-and-set intrinsic sub-program, but of course nobody expects to
magically be able to use hardware locking support when the target
platform does not have it. The point is that *when* it is available,
it should be usable in a consistent way.
Note that although test-and-set kind of mutual exclusion is a
very fast solution for locking resources for which is almost
never any contention, it certainly doesn't replace high-level
high-overhead locking provided by protected types.
The difference is that protected types provide strictly
priority-based FIFO queuing which makes fair sharing of scarce
resources possible. It would be a good idea however to use
fast test-and-set locks in these as well.
The example below shows how to do this, when there is hardware
test-and-increment and decrement-and-test. Assumptions are
that the standard queuing is expensive (expensive system calls
involved) and non-queuing but blocking event semaphores are much
cheaper. I've verified that these assumptions hold on OS/2, but
I guess the situation is the same for other operating systems.
Implementing the solution below causes slightly more expensive
blocking/unblocking and essentially free locking/unlocking in absence
of contention for the lock. The semantics of the Fast_Queuing_Mutex
are exactly the same as for the Slow_Queuing_Mutex, although some
bookkeeping should be added to record the priority for the task
owning the fast-lock in case of Ceiling_Locking policy.
Example: (untested incomplete code, details might be wrong)
type Fast_Queuing_Mutex is record
Slow_Lock : Slow_Queuing_Mutex;
Fast_Lock : Integer := 0;
Fast_Lock_Ready : Event_Semaphore := Not_Posted;
Have_Slow_Lock : Boolean := False;
end record;
procedure Request (L : in out Fast_Queuing_Mutex) is
Was_Zero : Boolean;
begin
Test_And_Increment(L.Fast_Lock, Was_Zero);
if Was_Zero then
-- We have lock without any overhead
return;
else
-- The fast lock already was in use.
-- Now wait in the queue for the Mutex,
-- (No wait if we're first)
Request_Mutex(L.Slow_Lock);
-- We also have to wait for the fast lock
-- This can be done using a non-priority based
-- event semaphore
Wait_Event(L.Fast_Lock_Ready);
-- Can't set this before fast lock is released
L.Have_Slow_Lock := True;
end if;
end Request;
Article Unavailable
next prev parent reply other threads:[~1996-11-06 0:00 UTC|newest]
Thread overview: 251+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-10-08 0:00 Once again, Ada absent from DoD SBIR solicitation Gregory Aharonian
1996-10-08 0:00 ` Gandalf
1996-10-09 0:00 ` Bill Nielsen
1996-10-09 0:00 ` Stanley R. Allen
1996-10-09 0:00 ` C++ Standardization (was: Once again, Ada absent from DoD SBIR solicitation) David Shochat
1996-10-10 0:00 ` Robert Dewar
1996-10-10 0:00 ` David Shochat
1996-10-20 0:00 ` Richard Riehle
1996-10-20 0:00 ` nasser
1996-10-21 0:00 ` Shayne Flint
1996-10-21 0:00 ` Robert A Duff
1996-10-21 0:00 ` Robert Dewar
1996-10-22 0:00 ` Ken Garlington
1996-10-22 0:00 ` Shayne Flint
1996-10-22 0:00 ` Robert A Duff
1996-10-22 0:00 ` Rush Kester
1996-10-11 0:00 ` Ed Falis
1996-10-11 0:00 ` Robert Dewar
1996-10-12 0:00 ` Kevin D. Heatwole
1996-10-12 0:00 ` Robert Dewar
1996-10-13 0:00 ` Larry Kilgallen
1996-10-13 0:00 ` Ed Falis
1996-10-11 0:00 ` Dave Wood
1996-10-11 0:00 ` Dave Wood
1996-10-17 0:00 ` Garbage Collection in Ada Thomas Kendelbacher
1996-10-10 0:00 ` Once again, Ada absent from DoD SBIR solicitation Mike Stark
1996-10-10 0:00 ` Stanley R. Allen
1996-10-11 0:00 ` Mitch Gart
1996-10-11 0:00 ` Robert Dewar
1996-10-14 0:00 ` Mitch Gart
1996-10-14 0:00 ` Ken Garlington
1996-10-11 0:00 ` Ken Garlington
1996-10-14 0:00 ` Norman H. Cohen
1996-10-14 0:00 ` Bevin R. Brett
1996-10-10 0:00 ` Mitch Gart
1996-10-10 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Brian Rogoff
1996-10-10 0:00 ` Dave
1996-10-11 0:00 ` Robert Dewar
1996-10-12 0:00 ` davedave
1996-10-12 0:00 ` Robert Dewar
1996-10-13 0:00 ` Larry Kilgallen
1996-10-11 0:00 ` Stephen Leake
1996-10-11 0:00 ` Dave
1996-10-11 0:00 ` Robert Dewar
1996-10-12 0:00 ` Dave
1996-10-12 0:00 ` Robert Dewar
1996-10-14 0:00 ` Keith Thompson
1996-10-11 0:00 ` Tucker Taft
1996-10-14 0:00 ` Brian Rogoff
1996-10-15 0:00 ` Mitch Gart
1996-10-15 0:00 ` Larry Kilgallen
1996-10-15 0:00 ` Mark A Biggar
1996-10-16 0:00 ` Brian Rogoff
1996-10-28 0:00 ` Kenneth Almquist
1996-10-29 0:00 ` Invoking parental methods (was: Java vs Ada 95) Larry Kilgallen
1996-10-31 0:00 ` Kenneth Almquist
1996-10-31 0:00 ` Larry Kilgallen
1996-11-05 0:00 ` Mitch Gart
1996-11-05 0:00 ` Larry Kilgallen
1996-11-09 0:00 ` Joel VanLaven
1996-11-05 0:00 ` Tucker Taft
1996-11-05 0:00 ` Larry Kilgallen
1996-11-06 0:00 ` Robert A Duff
1996-11-06 0:00 ` Larry Kilgallen
1996-11-06 0:00 ` Robert I. Eachus
1996-11-07 0:00 ` David Wheeler
1996-11-06 0:00 ` Mitch Gart
1996-11-08 0:00 ` Jon S Anthony
1996-11-08 0:00 ` Robert I. Eachus
1996-10-15 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Robert A Duff
1996-10-15 0:00 ` Robert Dewar
1996-10-15 0:00 ` Portability of Arithmetic (was: Java vs Ada 95) Larry Kilgallen
1996-10-16 0:00 ` Robert A Duff
1996-10-16 0:00 ` Robert Dewar
1996-10-17 0:00 ` Robert A Duff
1996-10-17 0:00 ` Larry Kilgallen
1996-10-18 0:00 ` Robert A Duff
1996-10-17 0:00 ` Robert Dewar
1996-10-18 0:00 ` Larry Kilgallen
1996-10-18 0:00 ` Robert A Duff
1996-10-18 0:00 ` Norman H. Cohen
1996-10-18 0:00 ` Robert Dewar
1996-10-18 0:00 ` Brian R. Hanson
1996-10-19 0:00 ` Robert Dewar
1996-10-19 0:00 ` Larry Kilgallen
1996-10-22 0:00 ` Once again, Ada absent from DoD SBIR solicitation Dale Stanbrough
1996-10-27 0:00 ` Robert Dewar
1996-10-21 0:00 ` Portability of Arithmetic (was: Java vs Ada 95) Norman H. Cohen
1996-10-21 0:00 ` Robert Dewar
1996-10-21 0:00 ` Norman H. Cohen
1996-10-21 0:00 ` Robert Dewar
1996-10-22 0:00 ` Larry Kilgallen
1996-10-23 0:00 ` Robert Dewar
1996-10-23 0:00 ` Larry Kilgallen
1996-10-23 0:00 ` Norman H. Cohen
1996-10-21 0:00 ` Lance Kibblewhite
1996-10-17 0:00 ` Stephen Leake
1996-10-17 0:00 ` Robert A Duff
1996-10-17 0:00 ` Larry Kilgallen
1996-10-18 0:00 ` Robert A Duff
1996-10-17 0:00 ` Robert Dewar
1996-10-17 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Alan Brain
1996-10-17 0:00 ` Robert A Duff
1996-10-17 0:00 ` Robert Dewar
1996-10-18 0:00 ` Keith Thompson
1996-10-20 0:00 ` Alan Brain
1996-10-24 0:00 ` Robert I. Eachus
1996-10-15 0:00 ` Mike Stark
1996-10-15 0:00 ` Robert Dewar
1996-10-16 0:00 ` Mike Stark
1996-10-17 0:00 ` Robert A Duff
1996-10-17 0:00 ` Why no Propagates? Matthew Heaney
1996-10-18 0:00 ` Robert A Duff
1996-10-18 0:00 ` Robert Dewar
1996-10-18 0:00 ` Norman H. Cohen
1996-10-18 0:00 ` Robert Dewar
1996-10-16 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Brian Rogoff
1996-10-16 0:00 ` Robert Dewar
1996-10-17 0:00 ` Robert A Duff
1996-10-17 0:00 ` Robert Dewar
1996-11-22 0:00 ` Van Snyder
1996-11-25 0:00 ` Java vs Ada vs Inferno, floating point arithmetic Anssi Porttikivi
1996-10-16 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Brian Rogoff
1996-10-16 0:00 ` Jon S Anthony
1996-10-18 0:00 ` Why no Propagates? Michel Gauthier
1996-10-22 0:00 ` Richard A. O'Keefe
1996-10-23 0:00 ` Michel Gauthier
1996-10-11 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Mitch Gart
1996-10-11 0:00 ` Jon S Anthony
1996-10-12 0:00 ` Robert Dewar
1996-10-14 0:00 ` Mitch Gart
1996-10-14 0:00 ` Brian R. Hanson
1996-10-14 0:00 ` Keith Thompson
1996-10-15 0:00 ` Dale Stanbrough
1996-10-15 0:00 ` Brian R. Hanson
1996-10-20 0:00 ` nasser
1996-10-11 0:00 ` Jon S Anthony
1996-10-12 0:00 ` davedave
1996-10-12 0:00 ` Robert Dewar
1996-10-16 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Jon S Anthony
1996-10-14 0:00 ` Jon S Anthony
1996-10-14 0:00 ` Robert Dewar
1996-10-15 0:00 ` Robert A Duff
1996-10-15 0:00 ` Larry Kilgallen
1996-10-16 0:00 ` Lars Farm
1996-10-16 0:00 ` Robert Dewar
1996-10-17 0:00 ` Why no Free? Matthew Heaney
1996-10-18 0:00 ` Robert Dewar
1996-10-18 0:00 ` Robert A Duff
1996-10-18 0:00 ` John Herro
1996-10-19 0:00 ` John Herro
1996-10-14 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Jon S Anthony
1996-10-14 0:00 ` Jon S Anthony
1996-10-14 0:00 ` Brian Rogoff
1996-10-14 0:00 ` Jon S Anthony
1996-10-15 0:00 ` Brian Rogoff
1996-10-15 0:00 ` Robert I. Eachus
1996-10-15 0:00 ` Robert I. Eachus
1996-10-15 0:00 ` Robert Dewar
1996-10-16 0:00 ` Samuel T. Harris
1996-10-16 0:00 ` Jon S Anthony
1996-10-18 0:00 ` Keith Thompson
1996-10-16 0:00 ` Jon S Anthony
1996-10-17 0:00 ` Robert Dewar
1996-10-17 0:00 ` Robert Dewar
1996-10-16 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Jon S Anthony
1996-10-18 0:00 ` Jon S Anthony
1996-10-18 0:00 ` Jon S Anthony
1996-10-18 0:00 ` Jon S Anthony
1996-10-29 0:00 ` Jon S Anthony
1996-10-29 0:00 ` Robert I. Eachus
1996-10-29 0:00 ` Kenneth Almquist
1996-10-29 0:00 ` Robert Dewar
1996-10-31 0:00 ` Kenneth Almquist
1996-10-30 0:00 ` Stephen Leake
1996-10-31 0:00 ` Lars Farm
1996-10-31 0:00 ` Jon S Anthony
1996-10-31 0:00 ` Kenneth Almquist
1996-11-01 0:00 ` Robert I. Eachus
1996-11-01 0:00 ` Robert A Duff
[not found] ` <55gkch$gg6@fozzie.sun3.iaf.nl>
1996-11-03 0:00 ` Robert A Duff
1996-11-03 0:00 ` Robert Dewar
1996-11-04 0:00 ` Larry Kilgallen
1996-11-04 0:00 ` Robert Dewar
1996-11-05 0:00 ` Fast locking (Was Re: Java vs Ada 95) Geert Bosch
1996-11-06 0:00 ` Larry Kilgallen
1996-11-06 0:00 ` Robert Dewar
1996-11-06 0:00 ` Geert Bosch [this message]
1996-11-07 0:00 ` Larry Kilgallen
1996-11-07 0:00 ` Robert Dewar
1996-11-11 0:00 ` Norman H. Cohen
1996-11-08 0:00 ` Geert Bosch
1996-11-02 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Robert Dewar
1996-11-04 0:00 ` Robert I. Eachus
1996-11-05 0:00 ` Larry Kilgallen
1996-11-14 0:00 ` Robert Dewar
1996-11-16 0:00 ` Geert Bosch
1996-11-17 0:00 ` Robert Dewar
1996-11-17 0:00 ` Robert A Duff
1996-11-18 0:00 ` Robert Dewar
1996-11-19 0:00 ` Robert A Duff
1996-11-18 0:00 ` Geert Bosch
1996-11-22 0:00 ` Robert Dewar
1996-11-18 0:00 ` Norman H. Cohen
1996-11-16 0:00 ` Robert A Duff
1996-11-16 0:00 ` Robert Dewar
1996-11-17 0:00 ` Unbounded strings (Was: Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation)) Robert A Duff
1996-11-18 0:00 ` Robert Dewar
1996-11-19 0:00 ` Joel VanLaven
1996-11-23 0:00 ` Robert Dewar
1996-11-19 0:00 ` Robert A Duff
1996-11-23 0:00 ` Robert Dewar
1996-11-24 0:00 ` Robert A Duff
1996-11-25 0:00 ` Norman H. Cohen
1996-11-27 0:00 ` Robert Dewar
1996-11-21 0:00 ` Robert I. Eachus
1996-11-24 0:00 ` Robert Dewar
1996-11-24 0:00 ` Fergus Henderson
1996-11-24 0:00 ` Robert Dewar
1996-11-25 0:00 ` Kevin D. Heatwole
1996-11-25 0:00 ` Robert A Duff
1996-11-26 0:00 ` Kevin D. Heatwole
1996-11-26 0:00 ` Robert A Duff
1996-11-26 0:00 ` Larry Kilgallen
1996-11-27 0:00 ` Norman H. Cohen
1996-11-29 0:00 ` Fergus Henderson
1996-11-29 0:00 ` Robert A Duff
1996-11-27 0:00 ` Robert Dewar
1996-11-26 0:00 ` Geert Bosch
1996-11-26 0:00 ` Robert Dewar
1996-11-25 0:00 ` Robert I. Eachus
1996-11-20 0:00 ` Jon S Anthony
1996-11-24 0:00 ` Robert Dewar
1996-11-06 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Robert I. Eachus
1996-10-11 0:00 ` Ada and the DoD HLA (was: " John Cosby
1996-10-13 0:00 ` Java vs Ada 95 (Was " Hannes Haug
1996-11-03 0:00 ` Hannes Haug
1996-11-06 0:00 ` Fast locking (Was Re: Java vs Ada 95) Hannes Haug
1996-11-06 0:00 ` Hannes Haug
1996-10-11 0:00 ` Once again, Ada absent from DoD SBIR solicitation Matthew M. Lih
1996-10-18 0:00 ` Rush Kester
1996-10-21 0:00 ` C++ Standardization (was: Once again, Ada absent from DoD SBIR solicitation) David Emery
1996-10-10 0:00 ` Jon S Anthony
1996-10-11 0:00 ` Jon S Anthony
1996-10-22 0:00 ` Tarjei Jensen
1996-10-22 0:00 ` C++ Standardization (was: Once again, Ian Ward
1996-11-01 0:00 ` Java vs Ada 95 (Was Re: Once again, Ada absent from DoD SBIR solicitation) Jon S Anthony
-- strict thread matches above, loose matches on Subject: below --
1996-11-12 0:00 Fast locking (Was Re: Java vs Ada 95) Marin David Condic, 561.796.8997, M/S 731-93
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox