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=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: tasks as part of record Date: Mon, 06 Oct 2014 09:24:01 +0100 Organization: A noiseless patient Spider Message-ID: References: <294a973f-5222-4aa3-8971-777cd2eb9174@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="865ecc8333c04b7dc8d5f87fc772110b"; logging-data="11008"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/8BrwyroS/hNOdeUZnRKUlSZqds1DKGUU=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (darwin) Cancel-Lock: sha1:/wR6WduywAbQmhoFBWM1l06QJn4= sha1:pO/4G5MBelQIHafxQf3HwX0+BM4= Xref: news.eternal-september.org comp.lang.ada:22132 Date: 2014-10-06T09:24:01+01:00 List-Id: Stribor40 writes: > I though it would be easier if task is componenet of record. What i > would like is that every time task runs i would like to operate on > components of student record. > For example for each student there will be one tasks. When each tasks > run i want it to identify yourself to the screen with student number > value. For example > > This is task #. -- where # is student number I'm not saying this is a good idea; limited types can be awkward, and there will be all sorts of problems with the tasking if you ever want to delete a student. But, for the record, with Ada.Text_IO; use Ada.Text_IO; procedure Strib is type Student; task type T (This : access Student) is entry Start (Number : Positive); end T; type Student is limited record -- has to be limited Student_Number : Positive range 1 .. 10; Name : String (1 .. 10); Count : Integer; The_Task : T (Student'Access); -- the current Student end record; task body T is begin accept Start (Number : Positive) do Put_Line ("starting task" & Positive'Image (Number)); This.Student_Number := Number; end Start; delay 1.0; Put_Line ("this is task" & Positive'Image (This.Student_Number)); end T; Students : array (1 .. 10) of Student; begin for J in Students'Range loop Students (J).The_Task.Start (Number => J); end loop; end Strib;