Junior — Middle
Proqramlaşdırma və iş parçacığı sinxronizasiyası kontekstində semafor nədir izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Semafor, ümumi resursa çoxlu iş parçacığının girişini idarə etmək üçün istifadə olunan sinxronizasiya mexanizmidir.
O, resursa eyni vaxtda neçə iş parçacığının daxil ola biləcəyini göstərən sayğac ehtiva edir. Bir iş parçacığı kritik bölməyə daxil olmaq istəyirsə, "semaforu" "tutmağa" çalışır:
- Əgər sayğac sıfırdan böyükdürsə, bir az azaldılır və iş parçacığı işləməyə davam edir.
- Əgər sayğac sıfırdırsa, iş parçacığı bloklanır və başqa bir iş parçacığının semaforu sərbəst buraxmasını gözləyir.
Bir iş parçacığı resursla işləməyi bitirdikdə, semaforu sərbəst buraxır və sayğacı artırır, bu da digər iş parçacıklarının davam etməsinə imkan verir.
Swift (iOS) dilində semafor istifadəsinə nümunə:
let semaphore = DispatchSemaphore(value: 2) // eyni zamanda 2 iş parçacığına icazə verir
DispatchQueue.global().async {
semaphore.wait() // semaforu tutmağa çalışır
print("İş parçacığı işləməyə başladı")
sleep(2) // işin simulyasiyası
print("İş parçacığı işi bitirdi")
semaphore.signal() // semaforu sərbəst buraxır
}
Bu şəkildə, semafor ümumi resursla işləyən iş parçacığı sayını idarə etməyə kömək edir, yarış şərtlərini qarşısını alır və düzgün işləməni təmin edir.