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.