Sobes.tech
Junior — Middle

Programlama ve iş parçacığı senkronizasyonu bağlamında semaforun ne olduğunu açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Semafor, ortak kaynağa erişimi kontrol etmek için kullanılan bir senkronizasyon mekanizmasıdır.

Bir sayaç içerir ve bu sayaç, aynı anda kaç iş parçacığının kaynağa erişebileceğini gösterir. Bir iş parçacığı kritik bölüme girmeye çalıştığında, "semoforu" yakalamaya çalışır:

  • Sayaç sıfırdan büyükse, bir azaltılır ve iş parçacığı çalışmaya devam eder.
  • Sayaç sıfırsa, iş parçacığı engellenir ve başka bir iş parçacığının semaforu serbest bırakmasını bekler.

Bir iş parçacığı kaynağı kullandıktan sonra, semaforu serbest bırakır ve sayacı artırır, böylece diğer iş parçacıkları devam edebilir.

Swift (iOS) dilinde semafor kullanımına örnek:

let semaphore = DispatchSemaphore(value: 2) // aynı anda 2 iş parçacığı izin verilir

DispatchQueue.global().async {
    semaphore.wait() // semaforu yakalamaya çalışır
    print("İş parçacığı çalışmaya başladı")
    sleep(2) // çalışma simülasyonu
    print("İş parçacığı çalışmayı bitirdi")
    semaphore.signal() // semaforu serbest bırakır
}

Bu şekilde, semafor, ortak kaynağa aynı anda çalışan iş parçacığı sayısını kontrol etmeye yardımcı olur, yarış koşullarını önler ve düzgün çalışmayı sağlar.