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,703c4f68db81387d X-Google-Thread: 115aec,703c4f68db81387d X-Google-Thread: f43e6,703c4f68db81387d X-Google-Attributes: gid103376,gid115aec,gidf43e6,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!newshub.sdsu.edu!logbridge.uoregon.edu!tethys.csu.net!nntp.csufresno.edu!sn-xit-03!sn-xit-09!sn-xit-08!sn-post-02!sn-post-01!supernews.com!corp.supernews.com!not-for-mail From: CTips Newsgroups: comp.lang.ada,comp.realtime,comp.software-eng Subject: Re: Teaching new tricks to an old dog (C++ -->Ada) Date: Tue, 08 Mar 2005 21:43:47 -0500 Organization: Posted via Supernews, http://www.supernews.com Message-ID: <112sonip5v4dca6@corp.supernews.com> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041217 X-Accept-Language: en-us, en MIME-Version: 1.0 References: <4229bad9$0$1019$afc38c87@news.optusnet.com.au> <1110032222.447846.167060@g14g2000cwa.googlegroups.com> <871xau9nlh.fsf@insalien.org> <3SjWd.103128$Vf.3969241@news000.worldonline.dk> <87r7iu85lf.fsf@insalien.org> <1110052142.832650@athnrd02> <1110284070.410136.205090@o13g2000cwo.googlegroups.com> <395uqaF5rhu2mU1@individual.net> <112rs0bdr2aftdf@corp.supernews.com> <1inxxr988rxgg$.1w9dedak41k89.dlg@40tude.net> <112s1r0rf0o8nca@corp.supernews.com> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@supernews.com Xref: g2news1.google.com comp.lang.ada:8904 comp.realtime:1097 comp.software-eng:4654 Date: 2005-03-08T21:43:47-05:00 List-Id: Martin Dowie wrote: > CTips wrote: > >> Will that generate: >> L0: >> lwlock temp,&Value >> add temp,temp,1 >> stwcond temp,&Value >> if( failed ) goto L0; >> or will it generate something much more heavy-weight. > > > If you need that particular assembler then you'd best write it yourself. > I don't know of any language that could guarentee what assembler is > produced following a compilation. > > Cheers > > -- Martin But isn't it interesting that Ada can't express this? Roughly speaking, Ada provides synchronous message passing and (non-nested?) monitors as first class constructs. This means that - it doesn't support asynchronous communication - it doesn't support any number of lock-free algorithms Also, Ada's only scheduling/queing discipline is FIFO with priorities (and priorities are only available if the RT annex is actually implemented). If I want to do earliest-deadline first, well, how do I go about doing it? Note that in most C compilers (NOT C++), it is possible to write the atomic increment code using inline assembler for the lwlock and stwcond and expect the code to be compiled correctly, and for the optimizations to optimize the code "correctly" (where correctly means that they'll do stuff like constant propagation etc. but won't change the atomic nature of the increment). Also, its possible to use the full power of C and still co-exist with libraries that provide threading models of various kinds (e.g. POSIX).