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