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,b4731a3b5d591abd X-Google-Attributes: gid103376,public From: Jeff Carter Subject: Re: Task Discriminants & Arrays Date: 1997/05/14 Message-ID: <3379CA43.167EB0E7@spam.innocon.com>#1/1 X-Deja-AN: 241494965 References: <33787506.41C67EA6@spam.innocon.com> <3378A5C5.5401@sprintmail.com> Organization: Innovative Concepts, Inc. Newsgroups: comp.lang.ada Date: 1997-05-14T00:00:00+00:00 List-Id: John G. Volan wrote: > > Jeff Carter wrote: > > > > As I understand it, task discriminants were intended to eliminate the > > "serial bottleneck" that results from having to call an initialization > > entry to provide information like this to task instances. However, as > > far as I can tell, it simply complicates matters: You have to declare an > > access type designating the task type, make your array type an array of > > these access types, then allocate the tasks at runtime: > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > No, not necessarily: > > > > > task type T (Id : Positive) is > > entry E; > > end T; > > > > type T_Ptr is access all T; > > > > type A is array (Some_Range) of T_Ptr; > > > > T_1 : aliased T (Id => 1); > T_2 : aliased T (Id => 2); > T_3 : aliased T (Id => 3); > ... > > O : constant A := > (1 => T_1'Access, > 2 => T_2'Access, > 3 => T_3'Access, > ... ); > An excellent choice when you have 1E6 of these guys ... -- Jeff Carter PGP:1024/440FBE21 Auntie-spam reply to; try ( carter @ innocon . com ) "Now go away, or I shall taunt you a second time." Monty Python & the Holy Grail