On Fri, 2011-03-25 at 14:13 +0300, Andrey Kuzmin wrote:> Turning try_lock into indefinitely spinning one breaks its semantics,> so deadlock is to be expected. But what's wrong in this scenario if> try_lock spins a bit before giving up?

Because that will cause this scenario to spin that "little longer"always, and introduce latencies that did not exist before. Either thesolution does not break this scenario, or it should not go in.