This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, Mar 16, 2012 at 12:21 AM, Ian Lance Taylor<iant@google.com> wrote:NightStrike<nightstrike@gmail.com> writes:
If I am interacting with shared memory, gcc doesn't know if another process changes values. This creates issues for optimization. I know that "volatile" can help address this, but it winds up causing a giant mess of other problems (like, for instance, I can't pass a volatile into memcpy.. or pretty much anything else from the standard libraries).
No, volatile can not address this. This is not what the volatile qualifier is for. The volatile qualifier is designed for working with memory mapped hardware. It is not designed for multi-processor shared memory. If a program is not multi-processor safe, then adding volatile will never make it multi-processor safe.
Do you have to use volatile if you're writing to memory mapped hardware, or just reading?
This is because the issues related to making code multi-processor safe are related to memory barriers and memory cache behaviour. Adding a volatile qualifier will not change the program's behaviour with respect to either.
Is caching the reason that makes another process sharing a memory address different than a piece of hardware sharing a memory address?
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |