C++ and the Perils of Double-Checked Locking (2004) [pdf]
aristeia.com
aristeia.com
Sadly though, atomic operations are still quite expensive, depending on CPU, taking as much as 40-50 times as long as a basic comparison. But you gotta do what you gotta do.
You're probably thinking of things like atomic increments, which are one to two orders of magnitude more expensive than an ordinary increment.