在static
上下文中使用不时(即,当static
关键字不存在且您不在全局范围内时),该怎么办? shared
和__gshared
关键字有效吗?
示例:
struct Temp
{
shared int i;
__gshared int j;
}
答案 0 :(得分:4)
共享int是键入的shared(int)
,它不会做任何东西,但会给它那种类型。 __gshared int
是无操作的 - DMD喜欢忽略无操作属性。
答案 1 :(得分:3)
D2默认为线程本地存储,而C,C ++和D1默认为全局存储。
其中一个区别是D中的全局变量对其他线程可见,而TLS则不然。
这可能听起来不多,但尝试连接到C库而没有意识到这一点。 (不可变的是。全局的)
IME __gshared几乎只存在于强制某些东西进入全局时通常它不会。
它可能有其他用途,但我还没有看到任何用途。
一个例子是C头中的全局变量。如果您尝试与它进行交互,则需要使用不可变或__hahared。当然还有其他方法,但这可能是最简单的。