"how much memory 'new byte[1000000][1]' allocates as opposed to 'new byte[1][1000000]'? Would you be surprised if you were to find out the difference is 1.6MBytes?"
"The purpose of atomic variables is not to remove race conditions that are not threadsafe; their purpose is to make the code threadsafe so that the race condition does not have to be prevented"