Laden...

Forenbeiträge von gunnag Ingesamt 3 Beiträge

16.11.2015 - 09:05 Uhr

Hallo,

ich bin über folgendes gestolpert und würde gerne Eure Meinung dazu einholen:

hier steht: The C# Memory Model in Theory and Practice

Ein Nachteil besteht darin, dass auch Typen, die normalerweise atomar gelesen und geschrieben werden (wie „int“), nicht atomar gelesen oder geschrieben werden können, wenn der Wert im Speicher nicht korrekt ausgerichtet ist. In C# ist die korrekte Ausrichtung von Werten normalerweise garantiert. Der Benutzer kann die Ausrichtung jedoch mithilfe der StructLayoutAttribute-Klasse überschreiben (bit.ly/Tqa0MZ).

ist das Korrekt? Das würde ja bedeuten, dass die primitive datatypes doch nicht atomar lesbar/schreibbar sind?

11.11.2015 - 13:09 Uhr

Danke Euch! Hilft schonmal weiter.

@gfoidl: Intel Inspector momentan

11.11.2015 - 12:32 Uhr

Hallo zusammen,

es geht um C#, .NET und multithreading. Soweit ihc weiß sind lese und schreibzugriffe auf datentypen ≤ native int atomar und das schlüsselwort volatile gibt mir eine acquire und release semantic (also keinen full-fence).

Ich habe folgenden Ausschnitt und frage mich warum meine race-detektoren hier einen data race anzeigen im "get { ...}" und auf der code-zeile in thread 2? Ist das ein false positive?


private volatile int m_my_int;

//auf thread 1 ausgeführt
public int get_int
{
    get { return this.m_my_int; }
}


// auf thread 2 ausgeführt
this.m_my_int += 7;