Subj : Re: [.NET] Volatile Fields To : comp.programming.threads From : Joe Seigh Date : Sat Sep 17 2005 11:38 am David Hopwood wrote: > Joe Seigh wrote: > >>Cool Guy wrote: >>>My confusion arises from the fact that only *one* of those fields is >>>volatile in the example linked from the OP, and not *both* of them, which >>>leads me to believe that the one field that isn't volatile could be >>>read/written from/to the cache instead of from/to main memory and thus >>>the code isn't thread-safe. >> >>If that was true then you could detect the presence of cache. But you >>can't detect the presence of cache by definition so it must not be >>true. > > > You *can* detect the presence of cache (even though it is a transparent > optimization). Its presence affects which of the behaviours that are > allowed by the nondeterministic memory model can actually occur on a given > implementation. This is usually not an issue if you depend only on the > memory model. But note that you cannot force other software to depend only > on the memory model, and that can have security implications, e.g. > . > Well, there is a performance effect which would have to be there otherwise there would be no reason to have cache then. I deliberately left that out to simplify things so as to not confuse the OP any further. He seems confused enough. But now that you've brought it up, you are now officially responsible for unconfusing the OP. Have fun. :) -- Joe Seigh When you get lemons, you make lemonade. When you get hardware, you make software. .