Soweit ich das verstehe, LOCK'en Delphi strings immer die Kerne. D.h. macht ein Thread viele String Operationen, müssen die anderen immer warten, obwohl die mit dessen strings und Variablen nix zu tun haben.
Ursprünglich hat dieser Präfix zum Locken des kompletten Speicherbus geführt, aber das ist schon länger her. Etwas aufwendiger ist das schon, aber wenn das nicht auf gemeinsamen Cache-Lines passiert, nicht annähernd so dramatisch.