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
next prev parent 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