From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Arguments for single-mutex-exclusion on protected types (Was: Does Ada tasking profit from multi-core cpus?)
Date: Sat, 17 Mar 2007 11:25:31 +0100
Date: 2007-03-17T11:25:15+01:00 [thread overview]
Message-ID: <j2hmx3m020e$.1i3rnxumlvxly$.dlg@40tude.net> (raw)
In-Reply-To: ygey7lxb6tg.fsf_-_@hugsarin.dmusyd.edu
On Fri, 16 Mar 2007 15:29:15 +0100, Jacob Sparre Andersen wrote:
> Jeffrey R. Carter wrote:
>
>> The last time I looked at the GNAT sources for protected objects,
>> each had a mutex associated with it that was obtained before any
>> action, even functions. I guess that hasn't changed.
>
> Isn't that the most efficient implementation on a POSIX system?
Even if it were, why Ada RTL should care?
> a) We use threads (and not processes) for tasks, since it is more
> efficient and a better conceptual match.
>
> b) We know that it is considered good style to make protected
> function bodies small.
>
> c) Since we use threads (a) we should use mutexes (and not
> semaphores) to implement inter-task exclusion.
? (Mutex = semaphore with the count=1)
> d) Since the protected function bodies can be assumed to be small
> (b), there will be a relatively large overhead in keeping track of
> the number of queued calls to protected functions and procedures.
But queue is not the only possible implementation of a waitable object.
Protected functions and procedures do not necessarily need queues, they
could be implemented using a hierarchical (read-write) mutex. [*] For
example, when the processor has an atomic increment instruction, a
read-write mutex could be implemented very efficiently. The idea is that
you *first* change the read count and then check if there is a potential
writer without any locking. If everything is clear, you just continue 2-3
instructions later, otherwise you take a system mutex and manage all counts
safely.
> e) Since the protected function bodies can be assumed to be small
> (b), the probability of colliding calls to protected functions is
> relatively small.
That surely depends on the program logic.
[...]
---------
* Leaving aside the problem of writer starvation in presence of
hyper-active readers. However that is solvable too.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2007-03-17 10:25 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-29 11:57 Does Ada tasking profit from multi-core cpus? Gerd
2007-01-29 12:04 ` Georg Bauhaus
2007-01-30 13:55 ` Gerd
2007-02-09 10:18 ` karl
2007-02-09 11:03 ` Stefan Lucks
2007-02-09 11:35 ` Ludovic Brenta
2007-03-04 17:54 ` jpluto
2007-03-05 10:08 ` Ludovic Brenta
2007-03-05 13:12 ` Dmitry A. Kazakov
2007-03-06 5:33 ` tmoran
2007-03-06 8:44 ` Dmitry A. Kazakov
2007-03-07 7:52 ` tmoran
2007-03-07 9:31 ` tmoran
2007-03-06 9:40 ` Colin Paul Gloster
2007-03-06 12:47 ` Jeffrey Creem
2007-03-06 14:44 ` Georg Bauhaus
2007-03-06 16:53 ` Dr. Adrian Wrigley
2007-03-06 18:58 ` tmoran
2007-03-07 10:11 ` Colin Paul Gloster
2007-03-07 18:47 ` tmoran
2007-03-06 18:51 ` Jeffrey R. Carter
2007-03-16 14:29 ` Arguments for single-mutex-exclusion on protected types (Was: Does Ada tasking profit from multi-core cpus?) Jacob Sparre Andersen
2007-03-17 5:26 ` Jeffrey R. Carter
2007-03-17 17:22 ` Robert A Duff
2007-03-17 17:52 ` Jeffrey R. Carter
2007-03-17 23:06 ` Randy Brukardt
2007-03-18 17:57 ` Robert A Duff
2007-03-19 21:49 ` Randy Brukardt
2007-03-20 0:55 ` Jeffrey R. Carter
2007-03-20 1:36 ` Randy Brukardt
2007-03-20 16:32 ` Jeffrey R. Carter
2007-03-20 17:51 ` Randy Brukardt
2007-03-21 0:10 ` Jeffrey R. Carter
2007-03-26 23:38 ` Robert A Duff
2007-03-26 23:24 ` Robert A Duff
2007-03-17 10:25 ` Dmitry A. Kazakov [this message]
2007-03-18 17:15 ` Arguments for single-mutex-exclusion on protected types Jacob Sparre Andersen
2007-03-18 18:50 ` Dmitry A. Kazakov
2007-03-20 12:38 ` Florian Weimer
2007-03-07 3:58 ` Does Ada tasking profit from multi-core cpus? Steve
2007-03-07 8:39 ` Dmitry A. Kazakov
2007-03-08 5:21 ` Randy Brukardt
2007-03-08 10:15 ` Dmitry A. Kazakov
2007-03-08 21:18 ` accuracy (was: Does Ada tasking profit from multi-core cpus?) Björn Persson
2007-03-09 8:33 ` accuracy Dmitry A. Kazakov
2007-03-10 1:39 ` accuracy Randy Brukardt
2007-03-10 9:11 ` accuracy Dmitry A. Kazakov
2007-03-11 3:03 ` accuracy Randy Brukardt
2007-03-11 5:21 ` accuracy tmoran
2007-03-11 8:52 ` accuracy Dmitry A. Kazakov
2007-03-11 13:57 ` accuracy Pascal Obry
2007-03-11 14:16 ` accuracy Dmitry A. Kazakov
2007-03-11 14:37 ` accuracy Pascal Obry
2007-03-11 15:50 ` accuracy Dmitry A. Kazakov
2007-03-11 17:38 ` accuracy Pascal Obry
2007-03-11 18:48 ` accuracy Dmitry A. Kazakov
2007-03-12 20:20 ` accuracy Randy Brukardt
2007-03-13 9:33 ` accuracy Dmitry A. Kazakov
2007-03-10 14:53 ` accuracy Stephen Leake
2007-03-10 18:36 ` accuracy Cesar Rabak
2007-03-05 18:46 ` Does Ada tasking profit from multi-core cpus? Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox