comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: High-Integrity OO and controlled types
Date: Wed, 4 May 2011 17:01:36 +0200
Date: 2011-05-04T17:01:36+02:00	[thread overview]
Message-ID: <1ligthpgu6ogv$.dquevy2bn4tw$.dlg@40tude.net> (raw)
In-Reply-To: 4dc166bd$0$6973$9b4e6d93@newsspool4.arcor-online.net

On Wed, 04 May 2011 16:46:21 +0200, Georg Bauhaus wrote:

> On 04.05.11 11:28, Dmitry A. Kazakov wrote:
> 
>> This does not read as a complete description. In what sense are the parts
>> of the array shared? If sharing means only independent use of the parts,
>> then what sense has the array as an object in this design? Independently
>> used parts must be local to their users. Now, if there is something else
>> behind this, i.e. that parts are sometimes used independently and sometimes
>> together, then too little is said about the mechanisms used for the latter,
>> and most intricate part of design.
>> 
>>> This sounds like one could design types that
>>> do(!) just this as part of their finalization.  But it does
>>> seem like an awful lot of overhead, and is essentially
>>> a type that is-a procedure.
>> 
>> You see that as an overhead only because the picture is incomplete. Once
>> you fill the gaps, you will see how "exit action" firs there. That would
>> definitely involve additional objects, e.g. controlled "handles" of which
>> finalization would deal with "exit" and other operations would serve
>> interlocking etc.
> 
> A simple example (full source linked, but may not be
> necessary); the intention is for it to be fairly low
> level data manipulation.  It is not nice, and could be
> generalized in several ways, I think.  If there is
> justification for doing so.
> 
> Array `Central` is manipulated by two tasks A and B.
> When these have finished filling `Central`, the env task
> computes the final result by counting certain values in `Central`.
> Communication uses simple variables and visibility.
> 
> The task B is sensitive to a special piece of input
> and will restart its work from the beginning when
> the input testing function raises Junk_Signal.

This looks like the "checkpoint synchronization problem".

   http://rosettacode.org/wiki/Checkpoint_synchronization

I would use a protected object to implement an array of events and
distributing jobs among the worker tasks when they join or leave. I would
likely place the array there. I would avoid polling.

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



  reply	other threads:[~2011-05-04 15:01 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-01 20:38 High-Integrity OO and controlled types Maciej Sobczak
2011-05-01 21:29 ` Robert A Duff
2011-05-01 22:44   ` Simon Wright
2011-05-02  7:59   ` Dmitry A. Kazakov
2011-05-02 16:32     ` Robert A Duff
2011-05-02 19:39       ` Dmitry A. Kazakov
2011-05-03  0:08         ` Robert A Duff
2011-05-03  7:30           ` Dmitry A. Kazakov
2011-05-03 16:51             ` Robert A Duff
2011-05-02  9:50 ` Cyrille
2011-05-02 10:01   ` Cyrille
2011-05-02 19:25     ` Maciej Sobczak
2011-05-03  9:32       ` Cyrille
2011-05-03  9:59         ` Maciej Sobczak
2011-05-03 10:24           ` Dmitry A. Kazakov
2011-05-03 16:53             ` Robert A Duff
2011-05-03 17:37               ` Dmitry A. Kazakov
2011-05-03 11:28           ` Georg Bauhaus
2011-05-03 12:27             ` Dmitry A. Kazakov
2011-05-03 15:22               ` Georg Bauhaus
2011-05-03 16:28                 ` Dmitry A. Kazakov
2011-05-04  8:48                   ` Georg Bauhaus
2011-05-04  9:28                     ` Dmitry A. Kazakov
2011-05-04 14:46                       ` Georg Bauhaus
2011-05-04 15:01                         ` Dmitry A. Kazakov [this message]
2011-05-04 15:25                           ` Georg Bauhaus
2011-05-04 16:23                             ` Dmitry A. Kazakov
2011-05-04 17:06                               ` Georg Bauhaus
2011-05-04 20:16                                 ` Dmitry A. Kazakov
2011-05-05  7:13                                   ` Maciej Sobczak
2011-05-05 10:58                                     ` Cyrille
2011-05-05 12:35                                       ` Dmitry A. Kazakov
replies disabled

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