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, 26 Apr 2018 18:43:04 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <702e2422-a93f-4200-9749-5122c3d0f899@googlegroups.com> NNTP-Posting-Host: kQkuQcRDy1QFvWpyB1foYw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.3 Xref: reader02.eternal-september.org comp.lang.ada:51729 Date: 2018-04-26T18:43:04+02:00 List-Id: On 2018-04-26 18:22, Jeffrey R. Carter wrote: > On 04/26/2018 01:54 AM, Randy Brukardt wrote: >> "Dmitry A. Kazakov" wrote in message >>> >>> The only place RM explains 'Callable is in ARM C.7.1:riddle: >> >> Interesting. It should be declared somewhere. Anyway, the rule is that >> T'Callable = True unless the task is completed. See 9.3 for the >> definition >> of completed. > > 'Callable and the concept of "callable" are defined at ARM 9.9(2): > "T'Callable Yields the value True when the task denoted by T is > callable, and False otherwise; a task is callable unless it is completed > or abnormal." Literally it means "can be called". In task body T is begin select accept X; or terminate; end select; end T; X cannot be called when the master awaits termination of T. Thus *logically* T is not callable when terminate will be selected. Surely there could be another attribute with a different name, or a predefined entry to be accepted when the master is waiting. Or both. Among with finalization deadlock another problem of terminate alternative is that there is not rendezvous. Surely programmers wish do be able to do explicit cleanup on termination without misusing controlled objects: select ... or terminate do ... -- Complete task end terminate; end select; [ Yes, we want to be able to requeue terminate and to make entry calls from there. ] -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de