As I understand it, it achives lockfree reads by having two caches: One for modifying and one for reading, and atomically swaps them after modifications (and applies the changes to what was previously the read cache).
Am I missing something or doesn't this reduce the overall memory available for cache by a factor 2x?