"...so unless an application requires the performance benefits provided, it is probably still a better bet to use standard locking mechanisms."
Or simply use battle-hardened APIs which are known to be fast and correct and which, themselves, have been implemented by using lock-free algorithms?
For example if I'm not mistaken throughout time the Java concurrency APIs did evolve to use more and more facilities using lock-free CAS operations under the hood.
You can also use 3rd party APIs, like the incredibly fast LMAX disruptor pattern (which also makes great use of CAS operations IIRC).
All this without being forced to come up yourself with the low-level stuff.
Then you can also use a recent language where concurrency has been built in from day 1: like Clojure which is pretty much deadlock free because it doesn't even give you access to locks.
I guess my point is: you don't have to implement yourself these advanced techniques to greatly benefit from them.