問題が発生することもあります。昔ながらのグローバル変数よりも遅くなります。マシン語で1命令であったところが3命令となります。方がわずかに高速化です。したがって、この速度低下が受け入れ難い問題となることはほとんど無いとは思われます。仮に問題となったとしましょう。その場合にはどうすればよいでしょう?グローバル変数の使用自体を最小にする。これは目指すべき価値のある目標です。データには同期の問題がありません。コンパイラはimmutableデータはTLSには配置しません。グローバルへの参照をキャッシュする。キャッシュ変数をコンパイラがレジスタに配置できた場合高速化が見込めます。それがTLS変数です。全てのグローバル変数を洗い出すのは簡単ではないかもしれません。かける方法がないからです。全てを漏れなく見つけ出せたと確信するのは難しいでしょう。いうスイッチが追加されています。デフォルト処理によってTLSとなっているグローバル変数が全て表示されます。データは、一度初期化されたら二度と変更されません。immutableデータはTLSに置く必要がないことを意味しています。データをTLSではなく昔ながらのグローバル記憶域に配置します。比較的多くのグローバルデータはこのカテゴリに属します。とマークをつければ解決です。コンパイラによるさらなる最適化の機会を与える意味でも優れた性質です。これによって、共有に関する正当性が静的に検査可能になります。これを実現する方法を用意しています。データは昔ながらのグローバルデータセグメントに配置されます。セーフモード(SafeD)では使用できません。ための目印にもなります。TLS変数では動きません。TLS変数のアドレスはリンカやローダですら決定できないからです。このアドレスは実行時に決まる値です。上記のコードのような初期化は静的コンストラクタで行うようにします。グローバル変数に関する奇妙なエラーメッセージが発せられることがあります。別のモジュールでは旧来のグローバル領域に置かれていることが原因です。ビルドしたライブラリとリンクしようとしたときに起きます。正しく最新版に置き換わっているか、注意してください。他には、Cのコードとの接続の際にもこのエラーが発生します。グローバル変数は依然として旧来のグローバル記憶域を使用します。関して正しく合っていることの確認が必要です。