comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A hole in Ada type safety
Date: Sun, 8 May 2011 10:08:13 +0200
Date: 2011-05-08T10:08:13+02:00	[thread overview]
Message-ID: <1mwaabp60tuqi$.1cbqxk0do4ic$.dlg@40tude.net> (raw)
In-Reply-To: 87oc3en898.fsf@mid.deneb.enyo.de

On Sat, 07 May 2011 11:57:07 +0200, Florian Weimer wrote:

> * Dmitry A. Kazakov:
> 
>> On Sat, 07 May 2011 11:09:44 +0200, Florian Weimer wrote:
>>
>>> As usual, there is a trade-off between flexibility and overhead: if
>>> the reference counters are kept separate, it is possible to
>>> implement weak pointers and safe references to sub-components.
>>
>> Interesting. Do you have a certain schema in mind, how to this?
> 
> The shared pointers in C++ and Boost implement this.  Andrei
> Alexandrescu's Modern C++ Design contains a short overview of
> implementation choices (but does not cover weak pointers).
> 
> GCC's implementation of std::share_ptr uses separate pointers to
> objects and their reference counts.  The reference counts contain two
> counters, for strong and weak references.  The actual object is
> dealloated when the strong count reaches zero.  The reference counts
> are deallocated when the strong and weak counts reach zero.

I mean a schema which could be usable for Ada. I see many problems, apart
from tasking. If you want to refer components, you need to add the parent's
count to the component's count in order to prevent its zeroing. When you
create a reference you have to check if the counts already exist somewhere.
Since nothing is allocated in the object, where get that information from?
IMO weak references are quite useless if do not support notifications (when
the last strong reference is removed). I.e. you need a list of weak
reference holders. Maintaining such lists is a problem. It is more than
count, it can be changed during notifications etc.

One possible approach could be a storage pool maintaining allocating and
maintaining counts for all object allocated there. It won't work for
components, though. 

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2011-05-08  8:08 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-30  8:41 A hole in Ada type safety Florian Weimer
2011-04-30 11:56 ` Robert A Duff
2011-04-30 15:27   ` Gavino
2011-04-30 16:16   ` Florian Weimer
2011-04-30 23:39     ` Randy Brukardt
2011-05-01 10:26       ` Florian Weimer
2011-05-03  1:40         ` Randy Brukardt
2011-05-03 16:57           ` Robert A Duff
2011-05-07  9:09           ` Florian Weimer
2011-05-07  9:28             ` Dmitry A. Kazakov
2011-05-07  9:57               ` Florian Weimer
2011-05-08  8:08                 ` Dmitry A. Kazakov [this message]
2011-05-08  8:46                   ` Florian Weimer
2011-05-08  9:32                     ` Dmitry A. Kazakov
2011-05-08 10:30                       ` Florian Weimer
2011-05-08 20:24                         ` anon
2011-05-08 21:11                           ` Simon Wright
2011-05-10  6:27                             ` anon
2011-05-10 14:39                               ` Adam Beneschan
2011-05-11 20:39                                 ` anon
2011-05-12  0:51                                   ` Randy Brukardt
2011-05-13  0:47                                     ` anon
2011-05-13  0:58                                       ` Adam Beneschan
2011-05-13  5:31                                       ` AdaMagica
2011-05-12  5:51                                   ` AdaMagica
2011-05-12 12:09                                     ` Robert A Duff
2011-05-12 14:40                                     ` Adam Beneschan
2011-05-14  0:30                                       ` Randy Brukardt
2011-05-09  7:48                         ` Dmitry A. Kazakov
2011-05-09 20:41             ` Randy Brukardt
2011-05-14 23:47     ` anon
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox