John,
Allocating and releasing strings is fairly easy. But the entire string management system includes a concatenation buffer which has to maintain its state across potentially any number of procedures, as a string is being constructed, before it is assigned to a variable.
I understand thread granularity is fairly coarse (say 1 to 10mS) so it makes sense to ensure that a thread has exclusive access for each statement involving a string operation.
I think this needs to be entirely controlled by the programmer rather than attempting to do it automatically in the compiler.
Charles