From: Natasha Kerensikova <lithiumcat@instinctive.eu>
Subject: Re: Safety of unprotected concurrent operations on constant objects
Date: Thu, 8 May 2014 09:07:44 +0000 (UTC)
Date: 2014-05-08T09:07:44+00:00 [thread overview]
Message-ID: <slrnlmmiav.i0l.lithiumcat@nat.rebma.instinctive.eu> (raw)
In-Reply-To: lkeucn$64k$1@loke.gir.dk
On 2014-05-08, Randy Brukardt <randy@rrsoftware.com> wrote:
> "Natasha Kerensikova" <lithiumcat@instinctive.eu> wrote in message
> news:slrnlmft61.i0l.lithiumcat@nat.rebma.instinctive.eu...
> ...
>> But what about dereferencing an access value? Is it safe to concurrently
>> dereference the same access value from multiple tasks?
>>
>> It's hard to imagine dereferencing a pointer to be unsafe, but as we all
>> know access are more than mere pointers, with accessibility checks and
>> custom storage pools and what not.
>
> The language only allows specific things to *not* be task-safe. You can read
> 9.10 and Annex A to find out what they are. (And then tell the rest of us,
> 9.10 is impentrable. :-) In particular, if 9.10 doesn't include something in
> the possible erroneous execution, then it has to be task safe. (For the
> obvious reason that the language spells out what *doesn't* have to work --
> everything else has to work in all conditions.)
Actually that was not all obvious to me, so I was looking something
explicit saying that whatever isn't covered by 9.10 is fine, and got
worried for not finding one.
>> By the way, are implicit subprograms calls, like the storage pool thing
>> on dereference, also covered by the non-guarantee of concurrent read
>> safety?
>
> Yes. There's nothing special about calls to Allocate or Finalize or similar
> routines.
When I asked this, I had in mind the Dereference abstract procedure from
GNAT's System.Checked_Pools, because then I incorrectly believed it to
be part of standard custom storage pool.
That case is still interesting, because now there *is* something special
about that call: it replaces a feature that is "intrinsic" according to
the standard. If I understand correctly the first part of your reply,
it means that the Dereference procedure must be thread-safe, despite
taking an in out storage pool object.
So to sum it up, I can put an access-to-array in a protected object,
replace it using a protected procedure, and safely use it concurrently
as a map using a binary search in a protected function.
I can then hide the protected object in the private part, wrap it in a
thread-safe reference type to avoid limited mess, and ensure the array
is sorted before handing it to the protected object.
And then everything would be fine, right? Or am I missing something?
Thanks a lot for your insights,
Natasha
next prev parent reply other threads:[~2014-05-08 9:07 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-02 8:42 Safety of unprotected concurrent operations on constant objects Natasha Kerensikova
2014-05-03 13:43 ` sbelmont700
2014-05-03 20:54 ` Natasha Kerensikova
2014-05-03 21:40 ` Simon Wright
2014-05-04 0:28 ` Jeffrey Carter
2014-05-04 7:46 ` Natasha Kerensikova
2014-05-04 8:06 ` Dmitry A. Kazakov
2014-05-04 15:18 ` sbelmont700
2014-05-04 15:57 ` Natasha Kerensikova
2014-05-04 18:30 ` sbelmont700
2014-05-04 19:34 ` Dmitry A. Kazakov
2014-05-05 19:04 ` Brad Moore
2014-05-05 21:23 ` Brad Moore
2014-05-04 21:44 ` Shark8
2014-05-05 8:39 ` Simon Wright
2014-05-05 15:11 ` Brad Moore
2014-05-05 16:36 ` Dmitry A. Kazakov
2014-05-06 6:00 ` Brad Moore
2014-05-06 8:11 ` Dmitry A. Kazakov
2014-05-06 8:48 ` Alejandro R. Mosteo
2014-05-06 9:49 ` G.B.
2014-05-06 12:19 ` Dmitry A. Kazakov
2014-05-06 12:58 ` G.B.
2014-05-06 15:00 ` Dmitry A. Kazakov
2014-05-06 16:24 ` G.B.
2014-05-06 19:14 ` Dmitry A. Kazakov
2014-05-07 6:49 ` Georg Bauhaus
2014-05-07 7:40 ` Dmitry A. Kazakov
2014-05-07 11:25 ` G.B.
2014-05-07 12:14 ` Dmitry A. Kazakov
2014-05-07 13:45 ` G.B.
2014-05-07 14:08 ` Dmitry A. Kazakov
2014-05-07 17:45 ` Simon Wright
2014-05-07 18:28 ` Georg Bauhaus
2014-05-07 4:59 ` J-P. Rosen
2014-05-07 7:30 ` Dmitry A. Kazakov
2014-05-07 8:26 ` J-P. Rosen
2014-05-07 9:09 ` Dmitry A. Kazakov
2014-05-07 11:29 ` J-P. Rosen
2014-05-07 12:36 ` Safety of unprotected concurrent operations on constant objects (was: Safety of unprotected concurrent operations on constant objects) Dmitry A. Kazakov
2014-05-07 14:04 ` Safety of unprotected concurrent operations on constant objects G.B.
2014-05-08 4:12 ` Brad Moore
2014-05-08 8:20 ` Dmitry A. Kazakov
2014-05-08 10:30 ` G.B.
2014-05-09 13:14 ` Brad Moore
2014-05-09 19:00 ` Dmitry A. Kazakov
2014-05-10 12:30 ` Brad Moore
2014-05-10 20:27 ` Dmitry A. Kazakov
2014-05-11 6:56 ` Brad Moore
2014-05-11 18:01 ` Brad Moore
2014-05-12 8:13 ` Dmitry A. Kazakov
2014-05-13 4:50 ` Brad Moore
2014-05-13 8:56 ` Dmitry A. Kazakov
2014-05-13 15:01 ` Brad Moore
2014-05-13 15:38 ` Brad Moore
2014-05-13 16:46 ` Simon Wright
2014-05-13 19:15 ` Dmitry A. Kazakov
2014-05-13 16:08 ` Dmitry A. Kazakov
2014-05-13 20:27 ` Randy Brukardt
2014-05-14 4:30 ` Shark8
2014-05-14 21:37 ` Randy Brukardt
2014-05-14 21:56 ` Robert A Duff
2014-05-15 1:21 ` Shark8
2014-05-14 14:30 ` Brad Moore
2014-05-15 8:03 ` Dmitry A. Kazakov
2014-05-15 13:21 ` Robert A Duff
2014-05-15 14:27 ` Dmitry A. Kazakov
2014-05-15 15:53 ` Robert A Duff
2014-05-15 16:30 ` Dmitry A. Kazakov
2014-10-26 17:11 ` Jacob Sparre Andersen
2014-05-08 19:52 ` Randy Brukardt
2014-05-06 16:22 ` Robert A Duff
2014-05-06 19:07 ` Dmitry A. Kazakov
2014-05-08 5:03 ` Brad Moore
2014-05-08 12:03 ` Brad Moore
2014-05-08 19:57 ` Randy Brukardt
2014-05-09 2:58 ` Brad Moore
2014-05-05 20:29 ` Natasha Kerensikova
2014-05-08 3:41 ` Randy Brukardt
2014-05-08 9:07 ` Natasha Kerensikova [this message]
2014-05-08 19:35 ` Randy Brukardt
2014-05-08 3:12 ` Randy Brukardt
2014-05-05 22:30 ` Brad Moore
2014-05-04 16:04 ` Peter Chapin
2014-05-04 18:07 ` Natasha Kerensikova
2014-05-04 18:55 ` Jeffrey Carter
2014-05-04 19:36 ` Simon Wright
2014-05-04 20:29 ` Jeffrey Carter
2014-05-05 22:46 ` Brad Moore
2014-05-04 20:25 ` Shark8
2014-05-04 23:33 ` sbelmont700
2014-05-05 7:38 ` Dmitry A. Kazakov
2014-05-08 3:45 ` Randy Brukardt
2014-05-08 3:19 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox