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=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,e44790cdcea9da82 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!newshub.sdsu.edu!elnk-nf2-pas!newsfeed.earthlink.net!stamper.news.pas.earthlink.net!newsread1.news.pas.earthlink.net.POSTED!a6202946!not-for-mail From: Jeffrey Carter Organization: jrcarter commercial-at acm [period | full stop] org User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko/20030624 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Problem with -gnatt References: <41651D37.4030805@mailinator.com> <2skt9qF1ljjdtU1@uni-berlin.de> <4165472D.2030704@mailinator.com> <416573FA.4010003@mailinator.com> <87k6u2mj08.fsf@insalien.org> <4166538E.6090907@mailinator.com> <41702af7$0$91003$39cecf19@news.twtelecom.net> <417377F7.7050506@mailinator.com> <4173f0ed$0$91003$39cecf19@news.twtelecom.net> <417409AB.8040702@mailinator.com> <4174BF2F.8050306@mailinator.com> <41752742$0$91006$39cecf19@news.twtelecom.net> <417536DE.3060405@mailinator.com> <41756ffe$0$91007$39cecf19@news.twtelecom.net> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Date: Sun, 24 Oct 2004 05:45:06 GMT NNTP-Posting-Host: 63.184.105.46 X-Complaints-To: abuse@earthlink.net X-Trace: newsread1.news.pas.earthlink.net 1098596706 63.184.105.46 (Sat, 23 Oct 2004 22:45:06 PDT) NNTP-Posting-Date: Sat, 23 Oct 2004 22:45:06 PDT Xref: g2news1.google.com comp.lang.ada:5666 Date: 2004-10-24T05:45:06+00:00 List-Id: Brian May wrote: > > However, as I think I might have said before, I have read that > creating a semaphore using a protected type is inefficient, because > protected types where intended to be much more flexible then > semaphores. There are places where semaphores are required. One is when exclusive control of external resources is required, and different combinations of such resources are required in different circumstances. Special attention to the order of obtaining and releasing such resources is needed to avoid deadlock. There are three ways to deal with mutual exclusion: semaphores, protected objects, and passive tasks. Semaphores should be avoided when possible. Passive tasks, the main idiom in Ada 83, have the advantages of protected objects without the disadvantages. Potentially blocking operations may be made from critical regions in passive tasks, for example. The disadvantage of passive tasks is that they are tasks, and each operation requires a context switch. There are places where each approach is preferable. Note that compilers implementing Annex D provide the package Ada.Synchronous_Task_Control, which defines type Suspension_Object, which is essentially a binary semaphore (D.10), probably implemented more efficiently than using a protected object. -- Jeff Carter "You've got the brain of a four-year-old boy, and I bet he was glad to get rid of it." Horse Feathers 47