C#-də Interlocked nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Interlocked System.Threading ad alanında yerləşən və çoxlu iş parçacığı tərəfindən paylaşılabilən dəyişənlər üçün atomik əməliyyatlar təmin edən sinifdir. Atomik əməliyyat, tamamilə yerinə yetirilən və ya heç yerinə yetirilməyən əməliyyatdır, hətta müxtəlif iş parçacqlarından eyni zamanda giriş olsa belə.
Interlocked tərəfindən təmin olunan əsas atomik əməliyyatlar bunlardır:
Increment:intvə yalongtipində dəyişənin dəyərini atomik şəkildə artırır.Decrement:intvə yalongtipində dəyişənin dəyərini atomik şəkildə azaldır.Add:intvə yalongtipində dəyişənə atomik şəkildə dəyər əlavə edir.Exchange: dəyişənin dəyərini atomik şəkildə yeni ilə dəyişdirir və əvvəlki dəyəri geri qaytarır. Müxtəlif tiplər üçün dəstəklənir, o cümlədənint,long,float,doublevə referans tiplər.CompareExchange: dəyişənin dəyərini verilmiş dəyərlə atomik şəkildə müqayisə edir. Əgər bərabərdirsə, dəyişənin dəyərini yeni ilə dəyişdirir. Əvvəlki dəyəri geri qaytarır. Müxtəlif tiplər üçün dəstəklənir.
Interlocked istifadə etmək məlumat yarışlarının (data races) qarşısını almağa kömək edir, bu yarışlar müxtəlif iş parçacığından olan ümumi dəyişənlərlə işləyərkən baş verə bilər. Bu, kodu daha etibarlı və səmərəli edir, çünki Interlocked adətən mutex və ya kilidlər olmadan atomik giriş təmin edir.
Interlocked.Increment istifadə nümunəsi:
// Bir neçə iş parçacığının müraciət edəcəyi dəyişən
private int _counter = 0;
public void Method1()
{
// Təhlükəsiz atomik artırma
Interlocked.Increment(ref _counter);
}
public void Method2()
{
// Təhlükəsiz atomik artırma
Interlocked.Increment(ref _counter);
}