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,FREEMAIL_FROM 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!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: Victor Porton Newsgroups: comp.lang.ada Subject: Re: Feature suggestion: different task schedules Date: Fri, 14 Jul 2017 01:11:22 +0300 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: H5rnIG5HjBZt1DRp9NYOMQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7Bit X-Complaints-To: abuse@aioe.org User-Agent: KNode/4.14.10 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:47408 Date: 2017-07-14T01:11:22+03:00 List-Id: Victor Porton wrote: > Victor Porton wrote: > >> I propose for Ada 2020 to add the following pragmas (and corresponding >> aspects) for tasks and task types: >> >> pragma Schedule=>Thread; >> >> the regular task. >> >> pragma Schedule=>Manual; >> >> the task runs only when a protected entry is called and stops at the next >> accept statement. >> >> This is usually the fastest mode in the case of one-core system. >> >> pragma Schedule=>Sometimes; >> >> the task run in either of two above modes (with tasks of a task type not >> necessarily scheduled in the same way (some may be Thread and some >> Manual)). >> >> The schedule mode may be chosen dependently on free CPU cores >> availability to make it the fastest. >> >> pragma Schedule=>Dynamic; >> >> a task with this schedule may switch between Thread and Manual mode at >> any moment of time. This is useful to use CPU cores effectively. >> >> What do you think? > > Hm, can a Manual task interact with any task (just like normal Thread > task) or only with its creator task? We need to settle this question > first. Another solution may be to include the "parent" task in the pragma: pragma Schedule=>Manual, Parent_Task=>...; When calling from the parent task, we do not need to synchronize, what is important for compiler optimization. Please, more ideas. -- Victor Porton - http://portonvictor.org