Какво е Interlocked в C#?
sobes.tech AI
Отговор от AI
Interlocked е клас в пространството от имена System.Threading, който предоставя атомарни операции за променливи, които могат да бъдат споделяни от няколко нишки. Атомарната операция е такава, която се изпълнява изцяло или изобщо не се изпълнява, дори при конкурентен достъп от различни нишки.
Основните атомарни операции, предоставени от Interlocked, са:
Increment: атомарно увеличава стойността на променлива от типintилиlong.Decrement: атомарно намалява стойността на променлива от типintилиlong.Add: атомарно добавя стойност към променлива от типintилиlong.Exchange: атомарно заменя стойността на променлива с нова и връща предишната стойност. Поддържа се за различни типове, включителноint,long,float,doubleи референтни типове.CompareExchange: атомарно сравнява стойността на променлива с дадена стойност. Ако са равни, заменя стойността на променливата с нова. Връща предишната стойност. Поддържа се за различни типове, включителноint,long,float,doubleи референтни типове.
Използването на Interlocked помага да се избегнат проблеми с конкуренцията на данни (data races), които могат да възникнат при работа с общи променливи от различни нишки без блокировки. Това прави кода по-надежден и по-ефективен в сценарии, където е необходим само атомарен достъп до една променлива, тъй като Interlocked обикновено избягва разходите за мьютекси или блокировки.
Пример за използване на Interlocked.Increment:
// Променлива, към която ще имат достъп няколко нишки
private int _counter = 0;
public void Method1()
{
// Безопасно атомарно увеличаване
Interlocked.Increment(ref _counter);
}
public void Method2()
{
// Безопасно атомарно увеличаване
Interlocked.Increment(ref _counter);
}