Semafor (programmering)
Användning av en semafor är inom datorprogrammering en teknik som används för att begränsa åtkomsten till en delad resurs eller process för flera samtidigt pågående processer under multikörning. Semaforer används i flera operativsystem som en primitiv synkroniseringsmetod.
En binär semafor fungerar ungefär som en mutex, dvs den håller koll på en resurs (eller en bit kod) som endast får användas av en tråd åt gången.
En räknande semafor behandlar resurser som kan användas av flera trådar samtidigt. Semaforens värde representerar antalet lediga resurser. Räknarsemaforer har två operationer: wait och signal. dessa kallas även up och down. När en process begär resursen till semaforen så körs wait-operationen, vilken minskar semaforens värde, för att indikera att en resurs används. Om semaforens värde är 0 så innebär det att resurserna är slut. Om en tråd i det läget försöker komma åt resurser så kommer den att försättas i sovläge och läggas i semaforens vänte-kö.
Signal-operationen släpper en använd resurs, ökar semaforens värde, samt tar bort en av trådarna från vänte-kön och startar den igen.