From: Hannes Haug <haugha@informatik.uni-tuebingen.de>
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: <uvvk9rz9vte.fsf@chaq.informatik.uni-tuebingen.de> (raw)
In-Reply-To: 325BC3B3.41C6@hso.link.com
geert@fozzie.sun3.iaf.nl (Geert Bosch) writes:
> I meant a lock that uses some form of busy-waiting instead of
> blocking. Such a lock can be implemented using atomic test-and-set
> or atomic swap. Although these locks are not efficient for long
> waits because of wasted CPU time and possible starving of other
> tasks, for resources that are only locked for a short time, like
> the ref-counted bounded string example, they are the best solution.
You can yield the task if the mutex is already locked.
Untested pseudo gnu c for sparc:
typedef struct mutex {
volatile int lock;
} mutex_t;
static void
mutex_init (mutex_t *mp)
{
mp->lock = 0;
}
static void
mutex_unlock (mutex_t *mp)
{
mp->lock = 0;
}
static int
mutex_trylock (mutex_t *mp)
{
int old_lock;
asm volatile ("ldstub [%1],%0" : "=r" (old_lock) : "r" (&mp->lock));
return old_lock;
}
static void
mutex_lock (mutex_t *mp)
{
while (mutex_trylock (mp) != 0)
thread_yield ();
}
typedef struct semaphore {
mutex_t mutex;
volatile int count;
} semaphore_t;
static void
semaphore_init (semaphore_t *sp, int count)
{
mutex_init (&sp->mutex);
sp->count = count;
}
static void
semaphore_post (semaphore_t *sp)
{
mutex_lock (&sp->mutex);
sp->count = sp->count + 1;
mutex_unlock (&sp->mutex);
}
static int
semaphore_trywait (semaphore_t *sp) /* this is NOT the ordinary trywait */
{
int old_count;
mutex_lock (&sp->mutex);
old_count = sp->count;
if (old_count > 0)
sp->count = old_count - 1;
mutex_unlock (&sp->mutex);
return old_count;
}
static void
semaphore_wait (semaphore_t *sp)
{
while (semaphore_trywait (sp) == 0)
thread_yield ();
}
This should be pretty fast. Even semaphore_wait
is small enough for automatic inlining.
-hannes
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 ` Shayne Flint
1996-10-22 0:00 ` Robert A Duff
1996-10-22 0:00 ` Ken Garlington
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 ` Ken Garlington
1996-10-11 0:00 ` Robert Dewar
1996-10-14 0:00 ` Mitch Gart
1996-10-14 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 ` 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 ` Robert I. Eachus
1996-11-08 0:00 ` Jon S Anthony
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 ` 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 ` Lance Kibblewhite
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-17 0:00 ` Larry Kilgallen
1996-10-18 0:00 ` Robert A Duff
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 ` Norman H. Cohen
1996-10-18 0:00 ` Robert Dewar
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) Jon S Anthony
1996-10-16 0:00 ` Brian Rogoff
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 ` Robert Dewar
1996-10-12 0:00 ` davedave
1996-10-12 0:00 ` Robert Dewar
1996-10-13 0:00 ` Larry Kilgallen
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-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-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 ` Brian Rogoff
1996-10-14 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 A Duff
1996-10-18 0:00 ` Robert Dewar
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-15 0:00 ` Robert I. Eachus
1996-10-15 0:00 ` Robert Dewar
1996-10-15 0:00 ` Brian Rogoff
1996-10-15 0:00 ` Robert I. Eachus
1996-10-16 0:00 ` Jon S Anthony
1996-10-16 0:00 ` Jon S Anthony
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-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 ` Kenneth Almquist
1996-10-29 0:00 ` Robert Dewar
1996-10-31 0:00 ` Kenneth Almquist
1996-10-29 0:00 ` Robert I. Eachus
1996-10-29 0:00 ` Jon S Anthony
1996-10-30 0:00 ` Stephen Leake
1996-10-31 0:00 ` Lars Farm
1996-10-31 0:00 ` Kenneth Almquist
1996-10-31 0:00 ` Jon S Anthony
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
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 ` Norman H. Cohen
1996-11-18 0:00 ` Geert Bosch
1996-11-22 0:00 ` Robert Dewar
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 [this message]
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