From: Michael Hardeman <mhardeman25@gmail.com>
Subject: Re: Better way to fill Storage_IO?
Date: Mon, 17 May 2021 13:48:10 -0700 (PDT) [thread overview]
Message-ID: <11979adf-d841-4b67-8693-567e6fe8bc55n@googlegroups.com> (raw)
In-Reply-To: <s7uj5p$10p7$1@gioia.aioe.org>
On Monday, May 17, 2021 at 4:20:14 PM UTC-4, Dmitry A. Kazakov wrote:
> On 2021-05-17 21:14, Simon Wright wrote:
> > Michael Hardeman <mhard...@gmail.com> writes:
> >
> >> So I've been messing around with the new Ada 2020 package
> >> Ada.Streams.Storage.Bounded/Unbounded; and if I'm understand it
> >> correctly it allows you to treat your program's memory like a stream
> >> without having to open file descriptors (which should make it
> >> faster?). That seems like a powerful abstraction to me and a great
> >> addition to the language.
> 1. It was always possible, since Ada 95, actually. So it is not that
> great addition.
>
> 2. The package as described is not a replacement for I/O, because it
> lacks blocking/synchronization and because it does not work between
> processes. E.g. at the end of the stream Read must rather block for an
> incoming Write. Both are quite possible to implement though.
>
> A great addition would be properly tagged protected objects and tasks. A
> blocking stream cannot support timed entry call syntax like this:
>
> select
> S := String'Input (Pipe'Access); -- This is not Ada!
> or delay 1.0;
> raise Timed_Out;
> end select;
>
> And note another problem. Entries do not work with indefinite objects.
> You cannot return String from an entry call.
>
> And yet another problem, you cannot use returned objects in many places,
> like in an entry call above.
> >> I was wondering if we could find a better way to fill the stream other
> >> than writing the variables into it? Can anyone figure out a good way
> >> to just stream a variable's bytes directly?
> Allocators, of course. I am using both allocators and memory-mapped
> streams (though of a greater variety, e.g. for blocked exchange,
> encryption, interporcess communication).
> > This *is* the way to just stream the variable's bytes directly. What
> > sort of syntax were you hoping for?
> Both allocators and streams require explicit specification of the type.
> Clearly, that is a way around multiple dispatch, but it is way too
> heavy. Access to stream is no more necessary in 'Input. It was not
> necessary when it was introduced in Ada 95. The Rosen's trick allows
> circumvent in- parameter modes, when necessary.
>
> --
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de
Hey Dmitry,
> Allocators, of course. I am using both allocators and memory-mapped
> streams (though of a greater variety, e.g. for blocked exchange,
> encryption, interporcess communication).
Could you show me an example of how I could do this with allocators?
next prev parent reply other threads:[~2021-05-17 20:48 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-17 18:44 Better way to fill Storage_IO? Michael Hardeman
2021-05-17 19:14 ` Simon Wright
2021-05-17 19:23 ` Michael Hardeman
2021-05-18 20:39 ` Simon Wright
2021-05-19 6:24 ` Dmitry A. Kazakov
2021-05-19 7:17 ` J-P. Rosen
2021-05-19 8:26 ` Björn Lundin
2021-05-19 19:25 ` J-P. Rosen
2021-05-19 19:58 ` Dmitry A. Kazakov
2021-05-19 20:18 ` Björn Lundin
2021-05-20 5:38 ` Niklas Holsti
2021-05-20 6:50 ` J-P. Rosen
2021-05-20 22:24 ` Randy Brukardt
2021-05-19 15:39 ` Simon Wright
2021-05-17 20:20 ` Dmitry A. Kazakov
2021-05-17 20:48 ` Michael Hardeman [this message]
2021-05-18 14:00 ` Per Sandberg
2021-05-18 9:08 ` J-P. Rosen
2021-05-18 10:10 ` Jeffrey R. Carter
2021-05-18 16:50 ` Shark8
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox