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!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Finalization of library level tasks Date: Thu, 19 Apr 2018 09:32:44 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <702e2422-a93f-4200-9749-5122c3d0f899@googlegroups.com> <04f19a56-7fab-416e-8ec0-b9a73e239e90@googlegroups.com> NNTP-Posting-Host: MyFhHs417jM9AgzRpXn7yg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:51628 Date: 2018-04-19T09:32:44+02:00 List-Id: On 18/04/2018 23:29, J-P. Rosen wrote: > Le 18/04/2018 à 16:52, J-P. Rosen a écrit : >> OK. You were actually quite close... Use a killer task (with the same >> master as your worker) like this: >> >> task Killer is >> entry Never_Called; >> end Killer; >> >> task body Killer is >> begin >> accept Never_Called; >> exception >> when Tasking_Error => >> -- Kill the other task >> end Killer; >> >> Hint: when the master completes, Tasking_Error is raised in all tasks >> waiting on entries that depend on that master. > Sorry, my mistake. Typed too fast from an old trick I used... It's the > other way round. When a task completes, it raises Tasking_Error in the > tasks waiting on its entries. > > So, you can wait for the completion of a task without busy waiting by > calling an entry of the task that is never accepted, and handling > tasking_error. But how to complete that task in the first place? The scenario of task termination you described in this thread before specifically precludes any task to complete in the event of master waiting them to complete. It is a deadlock built into the language. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de