From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Portable memory barrier?
Date: Tue, 9 May 2017 15:01:49 -0500
Date: 2017-05-09T15:01:49-05:00 [thread overview]
Message-ID: <oet77d$5ia$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 8a968aae-79e4-421b-ba4b-e0a9a33ce0db@googlegroups.com
"Jere" <jhb.chat@gmail.com> wrote in message
news:8a968aae-79e4-421b-ba4b-e0a9a33ce0db@googlegroups.com...
...
>I am still digesting some of this, so forgive the simple question:
Don't bother, it's irrelevant if you trust your compiler vendor. If you
don't, then you're out of luck on modern CPUs because mere mortals cannot
understand them.
>What prevents the last 3 lines from being reordered like this:
>r1 := r1 + 1;
>(Write_Index'Address) := r1;
>(r3) := r4;
Assuming again that Write_Index is atomic as is necessary to make any
guarentees, this translation is 100% wrong (can't put Write_Index into a
register), so reordering is irrelevant. If the CPU is going to do it anyway,
then the compiler has to do whatever the CPU vendor provided to prevent it.
If Write_Index isn't atomic, then you can make no assumptions about how the
code is executed and hopefully you aren't (it is purely sequential code).
Randy.
next prev parent reply other threads:[~2017-05-09 20:01 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-06 2:23 Portable memory barrier? Jere
2017-05-06 8:47 ` Jeffrey R. Carter
2017-05-06 14:17 ` Jere
2017-05-06 19:08 ` Dennis Lee Bieber
2017-05-06 19:26 ` Jeffrey R. Carter
2017-05-06 19:41 ` Jeffrey R. Carter
2017-05-06 20:42 ` Niklas Holsti
2017-05-09 19:49 ` Randy Brukardt
2017-05-09 22:07 ` Jere
2017-05-11 1:14 ` Randy Brukardt
2017-05-10 18:28 ` Shark8
2017-05-11 1:17 ` Randy Brukardt
2017-05-11 16:23 ` Jeffrey R. Carter
2017-05-07 20:18 ` Robert Eachus
2017-05-08 7:45 ` Dmitry A. Kazakov
2017-05-08 15:56 ` Robert Eachus
2017-05-08 16:22 ` Dmitry A. Kazakov
2017-05-08 18:39 ` Robert Eachus
2017-05-08 19:18 ` Robert Eachus
2017-05-08 21:09 ` Dmitry A. Kazakov
2017-05-08 23:24 ` Robert Eachus
2017-05-09 0:30 ` Jere
2017-05-09 4:02 ` Robert Eachus
2017-05-09 4:32 ` Robert Eachus
2017-05-09 4:44 ` Robert Eachus
2017-05-09 22:26 ` Jere
2017-05-09 20:01 ` Randy Brukardt [this message]
2017-05-09 19:57 ` Randy Brukardt
2017-05-10 0:51 ` Jere
2017-05-10 5:25 ` J-P. Rosen
2017-05-10 22:56 ` Jere
2017-05-11 7:36 ` Dmitry A. Kazakov
2017-05-13 20:25 ` Jere
2017-05-10 7:13 ` Dmitry A. Kazakov
2017-05-10 16:45 ` Robert Eachus
2017-05-10 17:28 ` Simon Wright
2017-05-10 23:21 ` Jere
2017-05-11 0:47 ` Randy Brukardt
2017-05-13 20:11 ` Jere
2017-05-15 22:33 ` Randy Brukardt
2017-05-10 23:30 ` Jere
2017-05-11 0:38 ` Randy Brukardt
2017-05-10 16:38 ` Jeffrey R. Carter
2017-05-10 23:40 ` Jere
2017-05-10 16:19 ` Robert Eachus
2017-05-11 1:02 ` Randy Brukardt
2017-05-11 1:51 ` Robert Eachus
2017-05-15 22:45 ` Randy Brukardt
2017-05-08 20:29 ` Niklas Holsti
2017-05-08 21:09 ` Dmitry A. Kazakov
2017-05-09 4:34 ` Niklas Holsti
2017-05-09 6:16 ` Niklas Holsti
2017-05-09 8:34 ` Dmitry A. Kazakov
2017-05-09 20:18 ` Randy Brukardt
2017-05-09 20:10 ` Randy Brukardt
2017-05-09 0:05 ` Jere
2017-05-09 8:26 ` Dmitry A. Kazakov
2017-05-09 19:53 ` Randy Brukardt
2017-05-09 20:27 ` Dmitry A. Kazakov
2017-05-11 0:35 ` Randy Brukardt
2017-05-11 8:24 ` Dmitry A. Kazakov
2017-05-15 22:53 ` Randy Brukardt
2017-05-18 17:44 ` Dmitry A. Kazakov
2017-05-18 21:01 ` Randy Brukardt
2017-05-19 7:54 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox