D如何标记__gshared的一切?

时间:2013-03-15 13:18:05

标签: multithreading concurrency d dmd

有没有办法用DMD标记所有对象__gshared?我正在开发一个游戏引擎,其中几乎所有东西都需要在线程之间共享,并且在任何地方发送垃圾邮件__gsharedshared都不会削减它。

对于每个希望我不这样做的人:关键部分将是最小的,并减少到检查枚举是否设置为已加载(当然是互斥)。因此,并发性不会给我带来任何好处。

2 个答案:

答案 0 :(得分:5)

您可以将所有变量放在一个块中并声明该共享

__gshared{
   SharedClass instance;
   //...
}

还要注意共享类或结构中的所有字段都是共享的

但我应该注意到,这种不便是设计上的,并鼓励重组数据以最大限度地减少共享内容

答案 1 :(得分:-1)

__ gshared告诉垃圾收集器资源可能在外部代码中使用,因此您需要手动分配/解除它(因此您可以在任何线程中访问相同的资源),另一方面共享用于实际的多个线程共享。

虽然我对某些细节可能有误,但实际的想法是