@ilya.gorbunov: That guarding of the internal structure makes it a blocking structure. Whenever two threads hit that lock there is a chance one of it gets blocked which can be very costly. Generally speaking non blocking algorithms tend to perform better when there are more threads involved compared to their blocking counterparts.