Semafor (programmering)

Användning av en semafor är inom programmering 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 (mutual exclusion), 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.

Wait-operationen körs när en process begär åtkomst till resursen. Semaforens värde minskas med 1 för att indikera att en resurs används. Värdet 0 indikerar att resurserna är slut (värdet kan alltså aldrig bli negativt). Om en tråd försöker komma åt resurser då semaforen har värdet 0 kommer tråden att försättas i sovläge och läggas i semaforens vänte-kö, i väntan på att en resurs frigörs.

Signal-operationen frigör 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.

Media som används på denna webbplats

Question book-4.svg
Författare/Upphovsman: Tkgd2007, Licens: CC BY-SA 3.0
A new incarnation of Image:Question_book-3.svg, which was uploaded by user AzaToth. This file is available on the English version of Wikipedia under the filename en:Image:Question book-new.svg