Junior — Middle
Çox ipli proqramlaşdırmada kilid (lock) mexanizmasında dəqiq nə ötürülür və ya istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Çox ipliqli proqramlaşdırmada (multithreading) kilid (lock) mexanizmasında, paylaşılan resursa eksklüziv giriş təmin edən obyekt və ya sinxronizasiya primitive istifadə olunur. Bir ip kilidi ələ keçirəndə, onu ələ keçirməyə çalışan digər ip'lər, onun sərbəst buraxılmasını gözləyəcək.
Yəni, "lock" altında, aşağıdakılar ötürülür və ya istifadə olunur:
- Kilidin vəziyyəti (dolu/boş).
- Gözləmə mexanizmi (məsələn, sərbəst buraxılmağı gözləyən ip'lərin növbəsi).
C# dilində, lock açar sözü, kilid nişanı kimi xidmət edən obyektlə işləyir. Nümunə:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Yalnız bir ip-in eyni zamanda icra etməli olduğu kod
}
}
Burada, lock daxilində, _lockObj obyektinə istinad ötürülür və bu, girişin idarə olunmasında istifadə olunur. Daxili olaraq, CLR bu obyektə kilid vəziyyətini idarə etmək üçün istifadə edir.