The Java memory model
Memory access buffering in multiprocessors