If you are more interested, Appendix C of "Is Parallel Programming Hard, And, If So, What Can You Do About It?" by Paul McKenney (http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/p...) provides a very detailed description as well. It really helped improve my understanding of how memory barriers and atomics work