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!news2.google.com!fu-berlin.de!uni-berlin.de!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Problem with -gnatt Date: Sun, 24 Oct 2004 10:54:58 +0200 Organization: cbb software GmbH Message-ID: 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> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de nUk38M5XtiNhSo6u4ej7dQMgXBbchtjmJyabW5yJiwo7QSXxo= User-Agent: 40tude_Dialog/2.0.12.1 Xref: g2news1.google.com comp.lang.ada:5668 Date: 2004-10-24T10:54:58+02:00 List-Id: On Sun, 24 Oct 2004 05:45:06 GMT, Jeffrey Carter wrote: > 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. Right, semaphores are required when the operation has to be performed on 1) the caller context, but at the same time 2) need to be blocking. But what does it mean to be blocking? Internally it should call to an entry point of a task or spin for another semaphore. It means that this or that way there is another task, maybe a non-Ada task, involved. So theoretically, if all tasks were visible one could rewrite that using requeue. Practically it would be almost impossible because of the parameter passing problem of requeue, and because circular requeues seem to be illegal. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de