Atomic lettura-modifica-scrittura in C #
-
10-10-2019 - |
Domanda
ho visto un paio di posti citando il seguente bit del C # spec: "A parte le funzioni di libreria progettato per questo scopo, non v'è alcuna garanzia di atomica lettura-modifica-scrittura." qualcuno mi può punto a queste funzioni di libreria?
Soluzione
La classe Interlocked dovrebbe fornire con ciò che si sta cercando ; come ad esempio Incremento e Decremento .
Altri suggerimenti
Penso che riferisce a funzioni come Interlocked.CompareExchange
.
Questo metodo può essere usato per, ad esempio, atomicamente aggiornare un double
:
static void Add(ref double field, double amount)
{
double before, after;
do
{
before = field;
after = before + amount;
}
while (Interlocked.CompareExchange(ref field, after, before) != before);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow