TODO lock-free http://preshing.com/20120612/an-introduction-to-lock-free-programming