В соответствии со стандартом:
C ++ 11 1.10 / 3: значение объекта, видимого для потока T в определенной точке, является начальным значением объекта, значением, назначеннымобъекту по T или значению, назначенному объекту другим потоком, в соответствии с правилами ниже.
Строковый литерал, как и любой другой константный объект, не может быть назначен юридически;он имеет статическую продолжительность хранения и поэтому инициализируется до запуска программы;следовательно, все потоки будут видеть его начальное значение всегда.
Старые стандарты ничего не говорили о потоках;поэтому, если ваш компилятор не поддерживает модель потоков C ++ 11, вам придется обратиться к его документации для каких-либо гарантий безопасности потоков.Однако трудно представить какую-либо реализацию, в которой доступ к неизменным объектам не был потокобезопасным.