Exactly as Sean said, I will try to recapital it more shortly.
If a single CPU core (or CP unit) does a write operation, and ends by that moment, there is no reason for moving the writen operation out from closest cache up the laddder to the RAM, and if another CPU core reads a value, there is no need to read it up the ladder from RAM if it is being hit in the cache (L1,L2 whatever). A lock keyword for example ensures that- reading this variable entity is assured done from RAM (or L3 shared), and ending a lock says that, this variable entity is written to RAM (or L3 shared at least).
(Remember lock keyword carries () operator in which you specify the criticaly obseved variable entity. The inside of block has nothing to do with specific of other safe variable, only the operations done to do the achievement)
Simply, a single assignment operation does not happen on a level visible to RAM or other cores. That what may get you confused as - I did this =, why my thread reading this is not this