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: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public From: Matthew Heaney Subject: Re: Software landmines (loops) Date: 1998/09/02 Message-ID: #1/1 X-Deja-AN: 387053204 Sender: matt@mheaney.ni.net References: <6renh8$ga7$1@nnrp1.dejanews.com> <6rf59b$2ud$1@nnrp1.dejanews.com> <6rfra4$rul$1@nnrp1.dejanews.com> <35DBDD24.D003404D@calfp.co.uk> <6sbuod$fra$1@hirame.wwa.com> <35f51e53.48044143@news.erols.com> <6sdiav$e0g$1@hirame.wwa.com> <6sfcft$70p$1@hirame.wwa.com> <6shp40$ec8$1@nnrp1.dejanews.com> <6sie46$eb7$1@hirame.wwa.com> <6siijm$h1m$1@hirame.wwa.com> NNTP-Posting-Date: Wed, 02 Sep 1998 00:15:46 PDT Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-09-02T00:00:00+00:00 List-Id: "Robert Martin" writes: > Of course later on, someone asks us to sieze and release a mutex for each > iteration of the loop. We'd like to put the seize as the first line of the > loop body, and the release as the last line of the loop body. But if there > are early exits, then we must put a release before every exit. No. Use a controlled type (construction/deconstruction) to automatically seize and release: loop declare Lock : Mutex_Lock (Mutex'Access); begin end; end loop; When you enter the loop, the Lock object elaborates, and during its initialization, it automatically calls the Seize operation of Mutex. When you leave the loop - via a return, or an exit, or an exception, or whatever - the Lock object is Finalized, during which time it automatically calls the Release operation of Mutex. So no, you don't have to worry about bailing out early. There is no maintenance penalty for an early return from the loop.