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!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Portable memory barrier? Date: Tue, 9 May 2017 22:27:01 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <0fc56bf7-1cfa-4776-9c47-a573db315c5f@googlegroups.com> NNTP-Posting-Host: BYuA7L7MRjuLLjcoGHOBxw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:46739 Date: 2017-05-09T22:27:01+02:00 List-Id: On 2017-05-09 21:53, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message >> Yet the question stands. In particular, which Ada primitives may ensure >> safe implementations of lock-free structures when no protected objects >> used. > > Atomic objects make such a guarentee. Nothing else does (well, ignoring > protected objects, of course, since you excluded them). End of story. Glad to hear that! > (Except that compilers might not implement it right, as I noted before.) So far I didn't experience problems with my implementations of lock-free FIFO and blackboard compiled with GNAT for x86 and ARM7. You are right noting that this is not testable (OK, one could fully test it under an emulator in simulated time, but who tests the emulator?). Yet, surprisingly, on real examples the error shows itself pretty quickly. The background is that since GNAT does not support pragma Atomic for 64-bit integers on 32-bit machines I have the implementation varying, selected by GNAT project scenario. E.g. GCC built-in operations are used instead of pragma Atomic. When the selected scenario is wrong the error shows itself almost instantly. So the conclusion is that GNAT seems OK. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de