2011-10-19 13 views
6

La specifica C# indica che la lettura e la scrittura sono atomiche per i tipi a 32 bit e inferiori (nonché per i riferimenti). Quindi se ho un campo Int32 nella mia classe so che più thread possono leggere e scrivere su di esso e saranno atomici in funzione e quindi il valore sarà sempre coerente (anche se i problemi di cache sono un potenziale problema ma non è questo il punto di questa domanda).Dimensione lettura/scrittura atomica su sistemi a 64 bit per .NET?

È lo stesso anche per i sistemi a 64 bit? Se compilo la mia app per 64 bit vuol dire che un Int64 è ancora considerato non atomico? Oppure posso considerare che un Int64 sia atomico in lettura/scrittura perché è compilato e in esecuzione su un sistema a 64 bit?

+1

In caso di dubbio, naturalmente, 'Interbloccato' - ma è una buona domanda. –

risposta

3

Deve essere lo stesso (non atomico) - i valori devono essere allineati correttamente per consentire ai valori a 64 bit di avere lettura/scrittura atomica, ma per quanto ne so non è necessario per CLR allineare sempre i valori in questo modo .

Check out How to guarantee 64-bit writes are atomic? per alcune discussioni su di esso.

Problemi correlati