D中的“共享”和“__共享”关键字

时间:2011-01-29 08:39:53

标签: shared d

static上下文中使用时(即,当static关键字不存在且您不在全局范围内时),该怎么办? shared__gshared关键字有效吗?

示例:

struct Temp
{
       shared int i;
    __gshared int j;
}

2 个答案:

答案 0 :(得分:4)

共享int是键入的shared(int),它不会任何东西,但会给它那种类型。 __gshared int是无操作的 - DMD喜欢忽略无操作属性。

答案 1 :(得分:3)

D2默认为线程本地存储,而C,C ++和D1默认为全局存储。

其中一个区别是D中的全局变量对其他线程可见,而TLS则不然。

这可能听起来不多,但尝试连接到C库而没有意识到这一点。 (不可变的是。全局的)

IME __gshared几乎只存在于强制某些东西进入全局时通常它不会。

它可能有其他用途,但我还没有看到任何用途。

一个例子是C头中的全局变量。如果您尝试与它进行交互,则需要使用不可变或__hahared。当然还有其他方法,但这可能是最简单的。