comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Advice, tasking and hardware
Date: Fri, 27 May 2016 17:27:12 -0500
Date: 2016-05-27T17:27:12-05:00	[thread overview]
Message-ID: <niahk0$6vm$1@loke.gir.dk> (raw)
In-Reply-To: niaaji$1nar$1@gioia.aioe.org

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:niaaji$1nar$1@gioia.aioe.org...
> On 2016-05-27 21:13, Shark8 wrote:
>> On Friday, May 27, 2016 at 1:50:50 AM UTC-6, Dmitry A. Kazakov wrote:
>>> 5. Tasks entries have parameter passing problems. If you don't handle
>>> everything in the rendezvous in order to release the caller as soon as
>>> possible, you need to copy parameters and store them locally. The design
>>> of the select statement prevents doing this in a structured way. E.g.
>>>
>>>     select
>>>        accept String_Call (Text : String) do
>>>           Local_Text := Text; -- Accept scope
>>>        end;
>>>        declare -- Handler's scope
>>>           Local_Text : String -- This does not work!
>>>        begin
>>>           -- Process Local_Text
>>>        end;
>>>     or accept ...
>>
>> Pretty much a non-problem in Ada 2012:
>>
>>     package Example is
>>
>> Task Text_IO is
>>     Entry Get( Data : String );
>>     Entry Put;
>>     Entry Done;
>> End Text_IO;
>>
>>     end Example;
>>
>>     package body Example is
>>
>> Task Body Text_IO is
>>     Package String_Holder is new Ada.Containers.Indefinite_Holders(
>>       Element_Type => String );
>
> That is no solution. You still have to move entry-specific local data to 
> the task-wide scope, which was the main point of being unstructured.
>
> And you certainly don't want pool-allocated stuff in drivers.

> Finally, this is no different from Unbounded_String.

Sure, if the only unconstrained type you ever use is a String. The 
Indefinite_Holders solution works for any unconstrained type, not just 
String.

And no one (I hope!) is putting tasks in drivers in the first place; one 
wants as little as possible in OS drivers, because they necessarily are 
outside of the control of the OS (written without the standards used for the 
OS, etc.) The caller of the driver needs to manage concurrency. So how one 
writes tasks isn't particularly relevant to writing drivers. (Whether or not 
the OS should avoid pool allocation is a different question altogether...)

Aside: I get the feeling that the term "drivers" has been totally corrupted 
in recent systems, including all kinds of higher-level junk that belongs to 
the OS. So we might be talking about different things.

                       Randy.


  reply	other threads:[~2016-05-27 22:27 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-25 21:24 Advice, tasking and hardware patrick
2016-05-26  1:09 ` Jeffrey R. Carter
2016-05-26  8:13   ` Simon Wright
2016-05-26  7:26 ` Dmitry A. Kazakov
2016-05-26 16:41   ` patrick
2016-05-26 17:56     ` Dmitry A. Kazakov
2016-05-26 20:35     ` Jeffrey R. Carter
2016-05-26 19:35   ` Jeffrey R. Carter
2016-05-26 20:51     ` patrick
2016-05-27  7:50     ` Dmitry A. Kazakov
2016-05-27 18:00       ` Simon Wright
2016-05-27 19:06       ` Jeffrey R. Carter
2016-05-27 22:05         ` Randy Brukardt
2016-05-27 23:09           ` Jeffrey R. Carter
2016-05-27 19:13       ` Shark8
2016-05-27 20:27         ` Dmitry A. Kazakov
2016-05-27 22:27           ` Randy Brukardt [this message]
2016-05-28  6:49             ` Dmitry A. Kazakov
2016-05-28 14:38           ` Shark8
2016-05-28 15:45             ` Dmitry A. Kazakov
2016-05-28  0:25 ` rieachus
2016-05-28  1:57   ` patrick
2016-05-28  4:13   ` Jeffrey R. Carter
2016-06-01 14:37     ` rieachus
2016-06-01 19:09       ` Dmitry A. Kazakov
2016-06-06  3:33         ` rieachus
2016-06-06  7:18           ` Dmitry A. Kazakov
2016-06-07 16:53             ` rieachus
2016-06-07 20:21               ` Dmitry A. Kazakov
2016-06-08  4:06                 ` rieachus
2016-06-08  7:29                   ` Dmitry A. Kazakov
2016-06-08 12:56                     ` rieachus
2016-06-08  0:19               ` Dennis Lee Bieber
replies disabled

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