1

すべてのオブジェクト__gsharedをDMDでマークする方法はありますか?私はほとんどすべてがスレッド間で共有される必要があるゲームエンジンに取り組んでおり、スパム__gsharedsharedどこでもそれをカットしません。

これを行わないようにしたいすべての人のために:クリティカルセクションは最小限に抑えられ、列挙型がLoadedに設定されているかどうかをチェックするようになります(もちろんmutexed)。したがって、並行性は私に何も得られません。

4

2 に答える 2

5

すべての変数をブロックに入れて、その共有を宣言できます

__gshared{
   SharedClass instance;
   //...
}

また、共有クラスまたは構造体のすべてのフィールドが共有されることにも注意してください

ただし、この不便さは設計によるものであり、共有されるものを最小限に抑えるためにデータを再構築することを奨励していることに注意してください。

于 2013-03-15T15:32:21.400 に答える
-1

__gsharedは、リソースが外部コード内で使用される可能性があることをガベージコレクターに通知するため、手動でリソースを割り当て/割り当て解除する必要があります(したがって、どのスレッドでも同じリソースにアクセスできます)。一方、共有は実際のマルチスレッド共有用です。

私はいくつかの詳細について間違っているかもしれませんが、実際の考えはそれです

于 2013-03-19T05:08:37.633 に答える