 It is reordered by the compiler, the processor and the memory subsystem to achieve maximum performance.On multiprocessor architectures, individual processors may have their own local caches that are out of sync with main memory.It is generally undesirable to require threads to remain perfectly in sync with one another because this would be too costly from a performance point of view.