comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: Is Text_IO.Put_Line() thread-safe?
Date: Fri, 15 Jun 2012 07:32:14 +0200
Date: 2012-06-15T07:32:12+02:00	[thread overview]
Message-ID: <4fdac8dc$0$9508$9b4e6d93@newsspool1.arcor-online.net> (raw)
In-Reply-To: <wcc7gv9zia8.fsf@shell01.TheWorld.com>

On 14.06.12 23:37, Robert A Duff wrote:
> awdorrin<awdorrin@gmail.com>  writes:
>
>> That is what I mean, if the Text_IO.Put_Line isn't thread-safe, and
>> its picking up data from the array being sorted in the other thread,
>> and printing it, then it very well could have written the information
>> it was supposed to be printing to the screen, into that array that was
>> being sorted... Anything could be corrupted.
>
> Yes.  It doesn't seem likely to me, but it could happen.
> More likely (I'm guessing) is that there's another bug, somewhere
> other than the Put_Lines.
>
>> I really cannot believe that the Put_Line's aren't thread safe.
>
> Yes, there are several things wrong with the design of Text_IO,
> and this is one of them.  But it's not too hard to work around it.

But surely I/O routines in general should  not be thread safe
and thus have to drag in everything required to achieve thread
safety?

The result is still likely not safe, after all, if one can duplicate
file descriptors, or is unaware of others writing to the same file,
such as a log file. Neither does the thread safety of single Text_IO
calls make sequences of Text_IO calls behave atomically.  Assuming
Num_IO.Put and New_Line to be thread safe,

   Num_IO.Put (123);  -- (1)
   New_Line;  -- (2)

What has happened between (1) and (2)?

An atomic sequence in a dedicated I/O task looks just right to me.

A program sprinkled with I/O calls because, well, they are
thread safe, is a good predictor of maintenance nightmares,
as it lacks modularity and separation of concerns.



  reply	other threads:[~2012-06-15  5:32 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-14 12:53 Is Text_IO.Put_Line() thread-safe? awdorrin
2012-06-14 13:49 ` Robert A Duff
2012-06-14 14:35   ` Adam Beneschan
2012-06-14 14:38   ` Dmitry A. Kazakov
2012-06-14 14:56     ` J-P. Rosen
2012-06-14 16:01       ` Dmitry A. Kazakov
2012-06-14 18:34       ` Robert A Duff
2012-06-21 19:01         ` Randy Brukardt
2012-06-14 18:29     ` Robert A Duff
2012-06-21 19:04       ` Randy Brukardt
2012-06-14 21:14     ` tmoran
2012-06-14 14:42   ` awdorrin
2012-06-14 18:24     ` Robert A Duff
2012-06-14 20:37       ` awdorrin
2012-06-14 21:37         ` Robert A Duff
2012-06-15  5:32           ` Georg Bauhaus [this message]
2012-06-15  7:22             ` Dmitry A. Kazakov
2012-06-15 21:32               ` Robert A Duff
2012-06-16  7:41                 ` Dmitry A. Kazakov
2012-06-15 21:27             ` Robert A Duff
2012-06-14 18:56 ` Jeffrey Carter
2012-06-14 20:50   ` awdorrin
2012-06-14 21:41     ` Robert A Duff
2012-06-15 12:39       ` awdorrin
2012-06-14 22:17     ` Jeffrey Carter
2012-06-14 22:40       ` Simon Wright
2012-06-14 23:35         ` Jeffrey Carter
2012-06-15  5:04           ` Simon Wright
2012-06-15  5:41             ` Jeffrey Carter
2012-06-21 19:20             ` Randy Brukardt
2012-06-16  2:00       ` BrianG
2012-06-16  6:04         ` J-P. Rosen
2012-06-16  6:49           ` Simon Wright
2012-06-16  7:58             ` Dmitry A. Kazakov
2012-06-16  8:03               ` Simon Wright
2012-06-16  8:14                 ` Dmitry A. Kazakov
2012-06-21 19:27               ` Randy Brukardt
2012-06-16  7:51           ` 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