すべてのオブジェクト__gshared
をDMDでマークする方法はありますか?私はほとんどすべてがスレッド間で共有される必要があるゲームエンジンに取り組んでおり、スパム__gshared
やshared
どこでもそれをカットしません。
これを行わないようにしたいすべての人のために:クリティカルセクションは最小限に抑えられ、列挙型がLoadedに設定されているかどうかをチェックするようになります(もちろんmutexed)。したがって、並行性は私に何も得られません。
すべてのオブジェクト__gshared
をDMDでマークする方法はありますか?私はほとんどすべてがスレッド間で共有される必要があるゲームエンジンに取り組んでおり、スパム__gshared
やshared
どこでもそれをカットしません。
これを行わないようにしたいすべての人のために:クリティカルセクションは最小限に抑えられ、列挙型がLoadedに設定されているかどうかをチェックするようになります(もちろんmutexed)。したがって、並行性は私に何も得られません。
すべての変数をブロックに入れて、その共有を宣言できます
__gshared{
SharedClass instance;
//...
}
また、共有クラスまたは構造体のすべてのフィールドが共有されることにも注意してください
ただし、この不便さは設計によるものであり、共有されるものを最小限に抑えるためにデータを再構築することを奨励していることに注意してください。
__gsharedは、リソースが外部コード内で使用される可能性があることをガベージコレクターに通知するため、手動でリソースを割り当て/割り当て解除する必要があります(したがって、どのスレッドでも同じリソースにアクセスできます)。一方、共有は実際のマルチスレッド共有用です。
私はいくつかの詳細について間違っているかもしれませんが、実際の考えはそれです