From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,3175c7276234c404,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-07-30 09:55:15 PST Path: archiver1.google.com!news2.google.com!postnews1.google.com!not-for-mail From: adam@irvine.com (Adam Beneschan) Newsgroups: comp.lang.ada Subject: Same two tasks in two rendezvous? Date: 30 Jul 2001 09:55:14 -0700 Organization: http://groups.google.com/ Message-ID: NNTP-Posting-Host: 63.206.153.98 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 996512114 5989 127.0.0.1 (30 Jul 2001 16:55:14 GMT) X-Complaints-To: groups-support@google.com NNTP-Posting-Date: 30 Jul 2001 16:55:14 GMT Xref: archiver1.google.com comp.lang.ada:10765 Date: 2001-07-30T16:55:14+00:00 List-Id: Is it possible for two tasks, T1 and T2, to be in two rendezvous with each other simultaneously? Suppose task T1, with entries E1 and E2, has the following ACCEPT: accept E1 do ... accept E2 do ... ... end E2; ... end E1; and T2 has the following statement: select T1.E1; -- entry call (A) then abort ... T1.E2; -- entry call (B) ... end select; T2 hits the select statement first. It finds that T1.E1 is not open, so it starts executing the abortable part, which then waits at Entry Call B. Then T1 comes along and accepts E1. This selects Entry Call A. However, as I understand the RM, this does not cause the abortable part of the SELECT statement to be aborted, since that aborting doesn't happen until the entry call is completed (i.e. until task T1 hits the "end E1;"). So the rendezvous proceeds, and eventually reaches the "accept E2" statement, which will then select Entry Call B, which T2 is waiting on. So at that point, while the inner rendezvous is executing, T1 and T2 have two rendezvous going on simultaneously. Is this what should actually happen? Is there anything in the language that prohibits this from happening? -- thanks, Adam