"Shared" und "__gshared" Schlüsselwörter in D

8

Wenn nicht in einem static -Kontext verwendet wird (dh wenn das static -Schlüsselwort nicht vorhanden ist und Sie nicht im globalen Gültigkeitsbereich sind), was bedeutet shared ? und __gshared keywords tun?

Beispiele:

%Vor%     
Mehrdad 29.01.2011, 08:39
quelle

2 Antworten

4

Der shared int wird shared(int) eingegeben, was nicht etwas anderes tut, als dem Typ zu geben. Das __gshared int ist ein No-Op - DMD ignoriert No-Op-Attribute gerne.

    
Bernard 29.01.2011, 12:18
quelle
1

D2 verwendet standardmäßig den lokalen Thread, während C, C ++ und D1 standardmäßig den globalen Speicher verwenden.

Einer der Unterschiede ist, dass eine globale Variable in D für andere Threads sichtbar ist, während TLS nicht.

ist

Das hört sich nicht nach viel an, aber versuchen Sie es mit einer C-Bibliothek zu verbinden, ohne dies zu bemerken. (unveränderlich ist. global auch)

IME __gshared existiert so gut wie nur dazu, etwas zu globalisieren, wenn es normalerweise nicht funktioniert.

kann es andere Verwendungen geben, aber ich habe keine gesehen.

Ein Beispiel wäre eine globale Variable in einem C-Header. Wenn Sie versuchen, mit ihm zu interagieren, benötigen Sie unveränderlich oder __gshared. Es gibt natürlich andere Möglichkeiten, aber das ist wahrscheinlich am einfachsten.

    
1100110 11.04.2012 23:17
quelle

Tags und Links