volatile conforms to the happens-before principle