有没有办法__gshared
用 DMD 标记所有对象?我正在开发一个游戏引擎,其中几乎所有内容都需要在线程之间共享,并且垃圾邮件__gshared
或shared
无处不在并不能减少它。
对于希望我不这样做的每个人:关键部分将是最小的,并减少到检查枚举是否设置为已加载(当然是互斥的)。所以并发不会给我带来任何好处。
有没有办法__gshared
用 DMD 标记所有对象?我正在开发一个游戏引擎,其中几乎所有内容都需要在线程之间共享,并且垃圾邮件__gshared
或shared
无处不在并不能减少它。
对于希望我不这样做的每个人:关键部分将是最小的,并减少到检查枚举是否设置为已加载(当然是互斥的)。所以并发不会给我带来任何好处。
您可以将所有变量放在一个块中并声明共享
__gshared{
SharedClass instance;
//...
}
另请注意,共享类或结构中的所有字段都是共享的
但是我应该注意到,这种不便是设计使然,并且鼓励重组数据以最大程度地减少共享内容
__gshared 告诉垃圾收集器资源可以在外部代码中使用,因此您需要手动分配/释放它(因此您可以在任何线程中访问相同的资源),另一方面,shared 用于实际的多线程共享。
虽然我可能在某些细节上错了,但实际的想法是