comp.lang.ada
 help / color / mirror / Atom feed
From: ishikawa@arielworks.com
Subject: Re: requeue with abort and timed call
Date: Sun, 4 Jan 2009 10:03:44 -0800 (PST)
Date: 2009-01-04T10:03:44-08:00	[thread overview]
Message-ID: <bf1f36fd-60ab-4d0a-ab4d-feb5f225685b@v5g2000prm.googlegroups.com> (raw)
In-Reply-To: 4uQ7l.509148$yE1.49118@attbi_s21

On Jan 4, 6:09 am, "Jeffrey R. Carter"
<spam.jrcarter....@spam.acm.org> wrote:
> Delay statements and calls to Ada.Text_IO.Put_Line are potentially blocking
> operations. It is an error to call potentially blocking operations from a
> protected action. See ARM 9.5.1.
I'm sorry, I overlooked it.

How about this one;

with Ada.Text_IO; use Ada.Text_IO;
procedure Timed_Protected is
   Z : boolean := True;

   protected P is
      entry E1;
      entry E2;
   end P;

   protected body P is
      entry E1 when True is
      begin
         -- this entry takes 5 seconds
         while Z loop -- Z will be changed in 5 sec. by T2
            null;
         end loop;
      end E1;

      entry E2 when True is
      begin
         null;
      end E2;
   end P;

   task T1 is
   end T1;

   task body T1 is
   begin
      Put_Line ("E1");
      P.E1;
   end T1;


   task T2 is
   end T2;

   task body T2 is
   begin
      -- to complete E1, change the flag
      delay 5.0;
      Z := False;
      Put_Line ("E1 done");
   end T2;

begin
   delay 0.2; -- to ensure start after T1
   Put_Line ("Parent selecting");
   select
      P.E2;
      Put_Line ("E2");
   else
      Put_Line ("Parent cancelling");
   end select;
end Timed_Protected;


I got the same result from this code.

It seems that the cancellation of entry calls occurs only at the end/
start of protected actions.
If the onging protected action takes long time, timed calls wait for
the end of the onging protected action ignoring its expiration time.



  parent reply	other threads:[~2009-01-04 18:03 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-28 13:24 requeue with abort and timed call ishikawa
2008-12-28 14:30 ` Dmitry A. Kazakov
2008-12-28 15:53   ` christoph.grein
2008-12-28 16:09     ` christoph.grein
2008-12-28 17:46       ` ishikawa
2008-12-29 10:23         ` christoph.grein
2008-12-29 10:55           ` Dmitry A. Kazakov
2008-12-29 11:17             ` christoph.grein
2008-12-29 12:27               ` Dmitry A. Kazakov
2008-12-28 17:16     ` Dmitry A. Kazakov
2008-12-28 21:42       ` Robert A Duff
2008-12-29 10:42       ` Jean-Pierre Rosen
2008-12-29 21:05         ` sjw
2008-12-30  9:25           ` Jean-Pierre Rosen
2008-12-30 13:18             ` christoph.grein
2008-12-30 15:39               ` Jean-Pierre Rosen
2008-12-30 17:01                 ` christoph.grein
2008-12-30 17:16                   ` ishikawa
2008-12-30 15:54               ` ishikawa
2008-12-30 21:33             ` sjw
2008-12-30 22:52               ` Robert A Duff
2008-12-31  9:21               ` Jean-Pierre Rosen
2008-12-31 15:39                 ` christoph.grein
2008-12-31 16:14                   ` Jean-Pierre Rosen
2009-01-03 16:49                     ` ishikawa
2009-01-03 21:09                       ` Jeffrey R. Carter
2009-01-04 15:40                         ` christoph.grein
2009-01-04 17:09                           ` Jeffrey R. Carter
2009-01-04 18:03                         ` ishikawa [this message]
2009-01-04 18:56                           ` Dmitry A. Kazakov
2009-01-04 23:17                             ` belteshazzar
2009-01-05  9:12                               ` Dmitry A. Kazakov
2009-01-05  2:48                             ` Jeffrey R. Carter
2009-01-05  9:30                               ` Dmitry A. Kazakov
2009-01-05 20:28                                 ` Jeffrey R. Carter
2009-01-05 20:47                                   ` Dmitry A. Kazakov
2009-01-06  2:35                                     ` Jeffrey R. Carter
2009-01-05 10:17                           ` Jean-Pierre Rosen
2008-12-28 15:53 ` sjw
replies disabled

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