there is some doubt about the reading semantics of volatile:
Why can"t normal read and volatile read after volatile read be reordered?
volatile read I know it is to fetch variable values directly from main memory, but since they are both reads, will it affect the acquisition of each other"s variable values?