From: Brad Moore <brad.moore@shaw.ca>
Subject: Re: confusion about message passing between the tasks
Date: Sun, 26 Oct 2014 15:15:29 -0600
Date: 2014-10-26T15:15:29-06:00 [thread overview]
Message-ID: <Svd3w.558918$Rp.474337@fx23.iad> (raw)
In-Reply-To: <175nrio3t8ima.vdesn04mg89f$.dlg@40tude.net>
On 2014-10-26 2:42 PM, Dmitry A. Kazakov wrote:
> An extreme scenario (unfortunately not Ada's annex E), a distributed system
> could be decomposed around rendezvous between tasks running on physically
> distributed nodes. This cannot be done with PO.
>
Why not with Ada's annex E? For instance, you can have a remote access
to class-wide type that is an interfaces, including protected interfaces
and task interfaces.
I have some examples of Remote buffers that have task interfaces in the
dequesterity project.
For instance calling the Read or Write interface primitives can result
in a rendezvous with a remote task object.
The same can be done with remote protected interfaces, and I have
working examples of that as well.
eg.
generic
type Element_Type is private;
pragma Preelaborable_Initialization (Element_Type);
...
package Buffers is
pragma Pure;
...
type Remote_Buffer_Interface is limited interface;
function Read
(From : Remote_Buffer_Interface)
return Element_Type is abstract;
procedure Write
(To : in out Remote_Buffer_Interface;
Item : Element_Type) is abstract;
...
end Buffers;
...
package Buffers.Active is
pragma Pure;
pragma Remote_Types; -- Not needed since implied by pragma Pure
task type Buffer
(Maximum_Capacity : Count_Type;
Task_Priority : System.Priority;
Maximum_Read_Block : Timeout_In_Milliseconds_Type;
Maximum_Write_Block : Timeout_In_Milliseconds_Type;
Maximum_Exclusive_Lock_Time : Timeout_In_Microseconds_Type)
is new Vectored_Buffer_Interface with
pragma Priority (Task_Priority);
overriding entry Read (Item : out Element_Type);
overriding entry Write (Item : Element_Type);
...
end Buffer;
....
end Buffers.Active;
Brad
next prev parent reply other threads:[~2014-10-26 21:15 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-24 16:44 confusion about message passing between the tasks compguy45
2014-10-24 18:39 ` Ludovic Brenta
2014-10-25 1:51 ` compguy45
2014-10-25 7:13 ` Ludovic Brenta
2014-10-24 23:49 ` Stribor40
2014-10-25 7:03 ` Ludovic Brenta
2014-10-25 7:58 ` Simon Wright
2014-10-25 13:01 ` compguy45
2014-10-25 14:11 ` Simon Wright
2014-10-25 17:25 ` Dennis Lee Bieber
2014-10-25 17:54 ` Jeffrey Carter
2014-10-25 22:23 ` Robert A Duff
2014-10-25 23:26 ` compguy45
2014-10-26 4:50 ` Dennis Lee Bieber
2014-10-26 10:20 ` Georg Bauhaus
2014-10-26 5:37 ` J-P. Rosen
2014-10-26 8:14 ` Pascal Obry
2014-10-26 15:47 ` J-P. Rosen
2014-10-26 20:27 ` Robert A Duff
2014-10-26 20:31 ` Robert A Duff
2014-10-26 20:36 ` Jeffrey Carter
2014-10-26 22:27 ` Robert A Duff
2014-10-26 23:23 ` Jeffrey Carter
2014-10-27 0:46 ` Robert A Duff
2014-10-27 2:18 ` Jeffrey Carter
2014-10-27 7:51 ` J-P. Rosen
2014-10-27 7:44 ` J-P. Rosen
2014-10-26 20:42 ` Dmitry A. Kazakov
2014-10-26 21:15 ` Brad Moore [this message]
2014-10-27 9:22 ` Dmitry A. Kazakov
2014-10-26 22:20 ` Robert A Duff
2014-10-27 7:40 ` J-P. Rosen
2014-10-25 23:42 ` compguy45
2014-10-25 23:55 ` compguy45
2014-10-26 0:24 ` Jeffrey Carter
2014-10-26 0:41 ` compguy45
2014-10-26 11:30 ` Brian Drummond
2014-10-26 15:40 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox