2011-01-29 12 views
8

不是static上下文(即,當static關鍵字是不存在的,你在全球範圍內不是),有什麼做內部使用shared__gshared關鍵字呢?「共享」和「__gshared」關鍵詞在d

例子:

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

回答

4

共享INT鍵入shared(int),不什麼,但給它的類型。 __gshared int是一個無操作 - DMD喜歡忽略無操作屬性。

+0

換句話說,他們倆在這裏毫無意義? – Mehrdad 2011-01-29 13:00:18

1

D2默認爲線程本地存儲,而C,C++和D1默認爲全局存儲。

其中一個區別是D中的全局變量對其他線程可見,而TLS不是。

這可能聽起來不太多,但嘗試接口到C庫而沒有意識到這一點。 (不可改變的是。global也是如此)

IME __gshared幾乎只存在強制某些東西進入全局通常它不會。

有可能是其他用途,但我沒有看到任何。

一個例子是C頭中的全局變量。如果您嘗試與它進行交互,則需要不可變或__gshared。當然還有其他方法,但這可能是最簡單的。