D2 по умолчанию - локальное хранилище потоков, а C, C ++ и D1 - глобальное хранилище.
Одно из отличий заключается в том, что глобальная переменная в D видна другим потокам, а TLS - нет.
Это может показаться не так много, но попробуйте подключиться к библиотеке C, не осознаваяэтот.(неизменным является также. global)
IME __gshared в значительной степени существует только для того, чтобы принудить что-либо стать глобальным, когда обычно это не происходит.
могут быть другие варианты использования, но я невидел любой.
Примером может служить глобальная переменная в заголовке C.Если вы попытаетесь взаимодействовать с ним, вам понадобится неизменный или __gshared.Конечно, есть и другие способы, но это, вероятно, самый простой.