comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: new_line in a put_line
Date: Wed, 4 Dec 2002 15:23:14 GMT
Date: 2002-12-04T15:23:14+00:00	[thread overview]
Message-ID: <wccy97524gt.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: c72suucb9i88nfdh38466980oc168jriu2@4ax.com

Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> writes:

> On 04 Dec 2002 10:31:15 +0100, Fraser Wilson
> <newsfraser@blancolioni.org> wrote:
> 
> >Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> writes:
> >
> >> Just do not do I/O from them. Define a mutex as a protected object and
> >> a spin lock as a controlled type (less troubles with releasing a
> >> mutex):
> >
> >[..]
> >
> >>    procedure Put_Line (Text : String) is
> >>       Get_It : Lock (Write_Mutex'Access);
> >>    begin
> >>       Ada.Text_IO.Put_Line (Text);
> >>    end Put_Line;
> >
> >Something inside me rebels at using side-effects from a declaration
> >like that. 
> 
> Right, right. It is also my opinion [there was a thread regarding this
> subject in c.l.a] that using unused (:-)) objects probably indicates a
> design problem. A task-based design might be better.

There is nothing wrong with declaring a limited controlled object that
is used only for its Initialize/Finalize effects.  It's a common idiom
in Ada (and also in C++).

It's the *only* way in Ada to safely ensure that resources get cleaned
up -- so telling people not to use it is bad advice, IMHO.

You could reasonably argue that Ada ought to have a better syntax for
this -- one that does not involve creating dummy types.  In fact, such a
syntax was proposed as part of Ada 9X, but was rejected on the grounds
that limited controlled types provide all the necessary functionality.

A task-based design would work just fine, too.

- Bob



  reply	other threads:[~2002-12-04 15:23 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-12-02  5:36 new_line in a put_line Vlad
2002-12-02  9:47 ` Preben Randhol
2002-12-02 17:04   ` Frank J. Lhota
2002-12-05 11:10     ` Preben Randhol
2002-12-02 10:14 ` Dmitry A. Kazakov
2002-12-02 14:57 ` Matthew Heaney
2002-12-03 11:33   ` Fraser Wilson
2002-12-03 15:01     ` Dmitry A. Kazakov
2002-12-04  9:31       ` Fraser Wilson
2002-12-04 14:10         ` Dmitry A. Kazakov
2002-12-04 15:23           ` Robert A Duff [this message]
2002-12-04 16:15             ` Dmitry A. Kazakov
2002-12-04 18:11               ` tmoran
2002-12-04 20:21                 ` Simon Wright
2002-12-05  9:36                 ` Dmitry A. Kazakov
2002-12-05 22:40                   ` tmoran
2002-12-04 15:25           ` Stephen Leake
2002-12-04 16:55             ` Jeffrey Carter
2002-12-04 17:24               ` Stephen Leake
2002-12-04 17:43               ` Warren W. Gay VE3WWG
2002-12-05  1:31                 ` Jeffrey Carter
2002-12-05 18:11                   ` Warren W. Gay VE3WWG
2002-12-02 15:49 ` Robert A Duff
  -- strict thread matches above, loose matches on Subject: below --
2002-12-03 11:52 Grein, Christoph
2002-12-04  9:39 ` Fraser Wilson
2002-12-04 10:03 Grein, Christoph
2002-12-05  6:16 Grein, Christoph
2002-12-05  9:44 ` Dmitry A. Kazakov
2002-12-05  6:28 Grein, Christoph
2002-12-05 14:19 ` Stephen Leake
replies disabled

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