From: Jacob Sparre Andersen <sparre@nbi.dk>
Subject: Re: Arguments for single-mutex-exclusion on protected types
Date: Sun, 18 Mar 2007 18:15:13 +0100
Date: 2007-03-18T18:15:13+01:00 [thread overview]
Message-ID: <yge7itetqvy.fsf@hugsarin.dmusyd.edu> (raw)
In-Reply-To: j2hmx3m020e$.1i3rnxumlvxly$.dlg@40tude.net
Dmitry A. Kazakov wrote:
> 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?
Because my Ada run-time is running on top of a POSIX system.
>> c) Since we use threads (a) we should use mutexes (and not
>> semaphores) to implement inter-task exclusion.
>
> ? (Mutex = semaphore with the count=1)
I intended these terms to be understood in a POSIX context. It is my
understanding that semaphores (semget(2), etc.) are inappropriate for
inter-thread exclusion, whereas mutexes ("pthread_mutex_t" objects)
are appropriate for this purpose.
>> 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.
Wouldn't we then expect our POSIX system to implement its mutexes
using this feature? With SMP systems and multi-core CPU's, I doubt
that atomic increment instructions are popular among the hardware
designers (but I may be wrong - this is not my strongest area of
expertise).
>> 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.
For "small" = "smaller than the code using the result", it will be
true up to at least two CPU cores (unless you force the callers to
synchronise - and then protected objects seem somewhat misplaced - any
other exceptions).
Please remember that the compiler should generate code which is most
efficient in most cases. We shouldn't expect it to optimise for a few
special cases at the cost of the more common cases.
Greetings,
Jacob
--
"Only Hogwarts students really need spellcheckers"
-- An anonymous RISKS reader
next prev parent reply other threads:[~2007-03-18 17:15 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
2007-03-18 17:15 ` Jacob Sparre Andersen [this message]
2007-03-18 18:50 ` Arguments for single-mutex-exclusion on protected types 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