Semafoor
In de informatica is een semafoor een variabele die de toegang tot een of meer bronnen beheert. Het is een hulpmiddel dat ontwikkelaars gebruiken om ervoor te zorgen dat functies alleen toegang hebben tot geldige gegevens en op het juiste moment worden uitgevoerd. Een semafoor kan een deadlock of race condition voorkomen door toegang tot een bron te weigeren wanneer deze niet beschikbaar is.
Er zijn twee hoofdtypen semaforen in computerprogramma's: binaire semaforen en telsmaforen.
Binaire semaforen
Een binaire semafoor is een booleaanse variabele die slechts twee mogelijke waarden kan hebben (0 of 1). Deze wordt vaak gebruikt als vergrendeling om de toegang tot een functie of bron te beperken. Een semafoor A beheert bijvoorbeeld functie getData(). Als A = 0, wordt getData() niet uitgevoerd. Als A = 1, wordt getData() uitgevoerd. Een binaire semafoor wordt ook beschouwd als een vlag of een schakelaar die aan of uit staat.
Telsemaforen
Een telsemafoor kan elk niet-negatief geheel getal zijn, ook wel een natuurlijk getal genoemd. De waarde ervan kan toenemen of afnemen op basis van de resultaten van een of meer functies. Een telsemafoor kan bijvoorbeeld het aantal beschikbare bronnen in een bronnenpool bijhouden. Als de semafoor vaker wordt verlaagd dan verhoogd, bereikt deze uiteindelijk 0. Een waarde van nul geeft aan dat er geen bronnen meer over zijn.
NOTE: Een "semafoor" is in de echte wereld een vlag of ander object dat wordt gebruikt om op afstand een signaal te geven. Iemand kan bijvoorbeeld een paal omhooghouden vanaf een aanlegsteiger om een veerbootkapitein te laten weten dat die persoon aan boord wil komen.
Test je kennis