It is a matter of faith, and usually misplaced at that, since volatile isn't usually defined to place any constraints on the order in which operations become visible to other processors. Certainly not in the C, C++, or POSIX standards, although some platform ABIs do specify this to some degree.

Both POSIX and C++ are trying to deal with this, but it's an uphill battle since processors differ widely on the sorts of constraints that they can support efficiently.

In the meantime, people sprinkle volatile around and pray. All the world's an x86, right?

I think I'd be happier with new compiler pragmas in this case than a keyword.  Then at least I KNOW that it can be ignored and will be optionally supported by compilers on a per-case basis.

But then again, that's also true for "inline" in C++.  It's just a suggestion, one that can be ignored.  The compiler can also inline stuff I didn't ask it to.  [C99  has inline now too doesn't it?]