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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,9d3353604f79501f,start X-Google-Attributes: gid103376,public From: Matthew Heaney Subject: Re: Task Problem Date: 1999/04/10 Message-ID: #1/1 X-Deja-AN: 464651678 References: <004601be8271$a408ad60$a20eb4d8@dhoossr> NNTP-Posting-Date: Fri, 09 Apr 1999 18:57:51 PDT Newsgroups: comp.lang.ada Date: 1999-04-10T00:00:00+00:00 List-Id: "David C. Hoos, Sr." writes: > -----Original Message----- > From: Sean Hill > To: chat@gnat.com > Date: Thursday, April 08, 1999 4:03 PM > Subject: Task Problem > > >Any thoughts out there? > > > I know this is not a first step when porting from Ada83 to Ada95, but > I have found no need for the rendezvous mechanism in any of my new > designs, and have changed many rendezvous designs to use protected > queues. I'll ditto that. It's possible to write Ada tasks as pure active threads, with no entries. When you need to call a task, you call a protected object instead that acts as an intermediary. I'm no expert in these matters, but I suspect that this would allow very efficient run-times to be built. You could have light-weight tasks that don't have accept statements or terminate alternatives. One of the things I'd like to do is build a run-time like that for GNAT (or for any Ada compiler), along the lines of a Ravenscar profile. For example, the Implementation Advice section of the GNAT reference manual reads: (start of quote) *D.7(21): Tasking Restrictions* When feasible, the implementation should take advantage of the specified restrictions to produce a more efficient implementation. Not followed. GNAT does not currently take advantage of any specified restrictions. (end of quote) It would be cool to build different run-times tailored to specific sets of restrictions, to get maximum efficiency. Anybody know how to do this?