comp.lang.ada
 help / color / mirror / Atom feed
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


  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