From: gpriv@axonx.com
Subject: Re: Robert Dewar's great article about the Strengths of Ada over other langauges in multiprocessing!
Date: Thu, 13 Mar 2008 07:02:42 -0700 (PDT)
Date: 2008-03-13T07:02:42-07:00 [thread overview]
Message-ID: <02c836da-4b31-48ad-acb8-433180341cb1@m34g2000hsc.googlegroups.com> (raw)
In-Reply-To: 63sn1tF29a5oiU1@mid.individual.net
On Mar 13, 9:03 am, "Alex R. Mosteo" <devn...@mailinator.com> wrote:
> Peter C. Chapin wrote:
> > This paper:
>
> >http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
>
> > describes some of these issues in a C++ context and is written by two
> > authors who probably know what they are talking about. Their conclusion
> > is that it is pretty much impossible to write correct multi-threaded
> > code in C++ without (non-standard) compiler assistance. I'm paraphrasing
> > here. It is my understanding, however, that this matter will be
> > addressed in C++ 0x.
>
> > Peter
>
> After reading the pointers given in this thread, I'm under the impression that
> indeed you need to use volatile for unprotected variables accessed across
> threads? For, example, in Ada:
>
> declare
> Global_Exit : Boolean := False;
> -- pragma Volatile (Global_Exit);
> -- pragma Atomic (Global_Exit);
> begin
> -- Lots o'tasks here that monitor Global_Exit for termination.
> end;
>
> Here you don't need a protected, since once someone makes Global_Exit true, the
> end arrives and all is well. I would normally mark that as Atomic which, as it
> implies volatile, is OK.
>
> But let's say one knows that boolean is atomic for the architecture, and makes
> the (risky) decision of not explicitly saying so to the compiler. I understand
> that, without volatile, tasks never writing to Global_Exit could optimize away
> any check for changes on it, and see it as a constant? (Indeed I guess Gnat
> would issue a warning about Global_Exit being constant).
>
> Although in Ada I don't see much (or any?) use for volatile, non-atomic shared
> variables outside of protected objects.
>
> Some flaw in my understanding?
You are correct you should use volatiles. I don't think there is any
need to have volatile inside the protected objects. Access will be
properly serialized anyway.
G.
next prev parent reply other threads:[~2008-03-13 14:02 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-08 6:04 Robert Dewar's great article about the Strengths of Ada over other langauges in multiprocessing! ME
2008-03-08 22:11 ` Maciej Sobczak
2008-03-09 1:09 ` Christopher Henrich
2008-03-09 13:52 ` Maciej Sobczak
2008-03-09 1:51 ` Phaedrus
2008-03-09 3:17 ` Jeffrey R. Carter
2008-03-09 13:59 ` Maciej Sobczak
2008-03-09 3:15 ` Jeffrey R. Carter
2008-03-09 13:32 ` Maciej Sobczak
2008-03-09 14:02 ` Dmitry A. Kazakov
2008-03-09 18:26 ` Phaedrus
2008-03-10 0:04 ` Ray Blaak
2008-03-10 7:49 ` Georg Bauhaus
2008-03-10 16:48 ` Ray Blaak
2008-03-10 7:53 ` Phaedrus
2008-03-09 22:31 ` Jeffrey R. Carter
2008-03-10 3:53 ` gpriv
2008-03-10 3:04 ` Robert Dewar's great article about the Strengths of Ada over Larry Kilgallen
2008-03-10 9:23 ` Maciej Sobczak
2008-03-10 19:01 ` Jeffrey R. Carter
2008-03-10 22:00 ` Maciej Sobczak
2008-03-11 0:48 ` Jeffrey R. Carter
2008-03-11 7:12 ` Pascal Obry
2008-03-11 8:59 ` Maciej Sobczak
2008-03-11 9:49 ` GNAT bug, Assert_Failure at atree.adb:2893 Ludovic Brenta
2008-03-14 20:03 ` Robert Dewar's great article about the Strengths of Ada over Ivan Levashew
2008-03-22 21:12 ` Florian Weimer
2008-03-09 8:20 ` Robert Dewar's great article about the Strengths of Ada over other langauges in multiprocessing! Pascal Obry
2008-03-09 9:39 ` Georg Bauhaus
2008-03-09 12:40 ` Vadim Godunko
2008-03-09 13:37 ` Dmitry A. Kazakov
2008-03-09 14:41 ` Vadim Godunko
2008-03-10 20:51 ` Randy Brukardt
2008-03-10 22:30 ` Niklas Holsti
2008-03-10 9:56 ` Ole-Hjalmar Kristensen
2008-03-11 13:58 ` george.priv
2008-03-11 15:41 ` Vadim Godunko
2008-03-12 0:32 ` gpriv
2008-03-12 13:33 ` Maciej Sobczak
2008-03-12 14:41 ` gpriv
2008-03-12 15:22 ` Vadim Godunko
2008-03-13 0:34 ` gpriv
2008-03-12 16:28 ` Maciej Sobczak
2008-03-12 17:24 ` Samuel Tardieu
2008-03-13 8:41 ` Maciej Sobczak
2008-03-13 15:20 ` Samuel Tardieu
2008-03-12 23:54 ` gpriv
2008-03-13 9:40 ` Maciej Sobczak
2008-03-13 10:49 ` Peter C. Chapin
2008-03-13 13:03 ` Alex R. Mosteo
2008-03-13 14:02 ` gpriv [this message]
2008-03-14 1:12 ` Randy Brukardt
2008-03-14 10:16 ` Alex R. Mosteo
2008-03-13 11:42 ` gpriv
2008-03-13 16:10 ` Maciej Sobczak
2008-03-13 16:16 ` gpriv
2008-03-13 22:01 ` Simon Wright
2008-03-13 22:25 ` Maciej Sobczak
2008-03-14 2:07 ` gpriv
2008-03-14 9:29 ` Maciej Sobczak
2008-03-14 21:54 ` Simon Wright
2008-03-15 2:29 ` gpriv
2008-03-15 13:29 ` Maciej Sobczak
2008-03-15 16:09 ` gpriv
2008-03-11 22:09 ` gpriv
2008-03-09 13:50 ` Maciej Sobczak
2008-03-09 14:54 ` Pascal Obry
2008-03-10 21:24 ` Randy Brukardt
2008-03-11 10:12 ` Alex R. Mosteo
2008-03-22 22:43 ` Florian Weimer
2008-03-26 13:49 ` Ole-Hjalmar Kristensen
2008-03-26 21:27 ` Florian Weimer
2008-03-27 9:31 ` Ole-Hjalmar Kristensen
2008-03-27 23:10 ` Florian Weimer
2008-03-28 9:51 ` Ole-Hjalmar Kristensen
2008-03-28 18:12 ` Florian Weimer
2008-03-28 21:45 ` Randy Brukardt
2008-03-31 7:59 ` Ole-Hjalmar Kristensen
2008-03-31 13:03 ` (see below)
2008-03-31 14:17 ` (see below)
2008-04-01 9:02 ` Ole-Hjalmar Kristensen
2008-04-01 14:12 ` (see below)
2008-04-02 7:22 ` Ole-Hjalmar Kristensen
2008-04-02 14:59 ` (see below)
2008-04-04 6:36 ` Ole-Hjalmar Kristensen
2008-04-04 13:56 ` (see below)
2008-04-04 17:36 ` Georg Bauhaus
2008-04-04 17:40 ` (see below)
2008-04-15 12:05 ` Ole-Hjalmar Kristensen
2008-04-17 4:46 ` Randy Brukardt
2008-03-28 6:34 ` Randy Brukardt
2008-04-29 7:15 ` Ivan Levashew
2008-05-01 2:03 ` Steve Whalen
2008-03-14 19:20 ` Mike Silva
2008-03-14 20:43 ` Ed Falis
2008-03-22 22:51 ` Florian Weimer
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox