06. februar 2004 - 13:46
Der er
1 kommentar
Tællesemafor vs binær semafor
Hvordan implementeres den generelle tællesemafor, der kan tage negative værdier? Den almindelige binære semafor som beskrevet i wrox BLP, giver rigtig funktionalitet, men de negative værdier ses aldrig.
06. februar 2004 - 14:16
#1
Forskellen på en binær og en tælle semafor er, at en binær semafor kan antage to værdier, true/false, on/off, open/closed. Dette medvirker til at kun en enkelt proces kan få lov til at være inden i et stykke kode som som er omkrandset af en binær semafor.
Med en tælle semafor har den egenskab af man kan tillade et antal processer at tilgå det samme stykke kode, med en begrænsning på hvor mange der er tilladt.
Normalt initialiserer man en tællesemafor til +3 (eller -3), hvis man tillader 3 processer at på en gang. Hver gang en proces kommer forbi semaforen, tæller man semaforen 1 ned, hhv. op (alt efter om man starter med negative eller positive værdier). Når semaforen er 0 blokkerer den de processer som ønsker tilgang. I det der bliver signaleret til tællesemaforen, bliver en af de ventende processer aktiveret.
Jeg ved ikke om det hjælper eller om du vil vide hvordan man laver en tællesemafor af en binær semafor.