Any number of threads can read from a shared memory location simultaneously whereas at most one thread can write to a shared memory location at the same time.
Atomic load shouldn't sacrifice scalability in this way. Use __atomic_load_n() whenever it is available for atomic loads.
Currently it doesn't seem to cause any problems because atomic loads are rarely used during SQL statement execution. OTOH performance schema seem to be using atomic loads heavily.
More information: http://svoj-db.blogspot.ru/2014/02/mariadb-scalability-atomic-load.html