Sobes.tech
Junior — Middle

SpinLock'un çalışma prensiplerini ve hangi senaryolarda kullanıldığını açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

SpinLock, zaten alınmış bir kilidi yakalamaya çalışırken, thread'i uyku durumuna geçirmeden (sleep), aktif bir döngü ("spin") gerçekleştirerek kilidin kullanılabilirliğini kontrol eden bir senkronizasyon primitive'idir.

Çalışma prensibi:

  • Thread, kilidi almaya çalışır.
  • Eğer kilit boşsa, alır ve çalışmaya devam eder.
  • Eğer kilit meşgulse, durumu döngü içinde kontrol eder, uyku moduna geçmeden.

Ne zaman kullanmalı:

  • Kilidin bekleme süresi çok kısa ise ve sleep/wakeup geçişi daha maliyetli olacaksa.
  • Düşük gecikmeli ve yüksek yarışma içeren sistemlerde.

Eksiklikler:

  • Uzun beklemelerde CPU kaynaklarını boşa tüketir.

Pseudokod örneği:

while !atomic_compare_and_swap(&lock, 0, 1) {
    // aktif bekleme
}
// kritik bölüm
lock = 0