
Caleb Epstein wrote:
On 8/31/06, John Maddock <john@johnmaddock.co.uk> wrote:
In any case all the implementations I'm aware of are minimally thread safe these days, if that's not the case I'd certainly like to hear about it. BTW implementations that used copy-on-write in the early days almost all (all?) switched away from that precisely because of threading issues.
Even the latest libstdc++ (GNU's Standard C++ library) uses a refcounted std::string.
Darn, I hadn't realised that :-(
One needs to be careful when sharing strings across thread boundaries. See these bug reports for a detailed discussion:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10350 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21334
Very interesting stuff! I'm not sure that it's relevent in this case though: if you're lexical_cast'ing *to* a string then these issues shouldn't arise, whether there are other threads getting involved or not. If you're casting *from* a string, then it appears that you need a mutex if you know the string is likely to be visible to other threads, even if all accesses to it are non-mutating. Have I got that right? Thanks, John.