¿Qué es Interlocked en C#?
sobes.tech AI
Respuesta de la IA
Interlocked es una clase en el espacio de nombres System.Threading que proporciona operaciones atómicas para variables que pueden ser compartidas por varios hilos. Una operación atómica es aquella que se ejecuta completamente o no se ejecuta en absoluto, incluso en acceso concurrente desde diferentes hilos.
Las principales operaciones atómicas proporcionadas por Interlocked son:
Increment: Incrementa de forma atómica el valor de una variable de tipointolong.Decrement: Decrementa de forma atómica el valor de una variable de tipointolong.Add: Añade de forma atómica un valor a una variable de tipointolong.Exchange: Reemplaza de forma atómica el valor de una variable por uno nuevo y devuelve el valor anterior. Es compatible con varios tipos, incluyendoint,long,float,doubley tipos de referencia.CompareExchange: Compara de forma atómica el valor de una variable con un valor dado. Si son iguales, reemplaza el valor de la variable por uno nuevo. Devuelve el valor anterior de la variable. Es compatible con varios tipos, incluyendoint,long,float,doubley tipos de referencia.
El uso de Interlocked evita problemas de competencia de datos (carreras de datos), que pueden ocurrir al trabajar con variables compartidas desde diferentes hilos sin bloqueos. Esto hace que el código sea más confiable y eficiente en escenarios donde solo se requiere acceso atómico a una variable, ya que Interlocked generalmente evita costos asociados a mutex o bloqueos.
Ejemplo de uso de Interlocked.Increment:
// Variable a la que accederán varios hilos
private int _counter = 0;
public void Method1()
{
// Incremento atómico seguro de _counter
Interlocked.Increment(ref _counter);
}
public void Method2()
{
// Incremento atómico seguro de _counter
Interlocked.Increment(ref _counter);
}