Ein Semaphor ist eine Variable (Datentyp), die dazu benutzt wird den Zugriff von mehreren Prozessen auf gemeinsame Resourcen zu kontrollieren.
Ein Semaphor kann als ein Zähler gesehen werden, der zählt wie viele Einheiten einer bestimmten Ressource (noch) verfügbar sind. Dazu benötigt man Methoden, um diesen Zähler anzupassen, wenn Ressourcen angefordert bzw. freigegeben werden.
Semaphore stellen eine andere Möglichkeit dar, einen kritischen Wettlauf (race condition) zu verhindern. Allerdings stellt ihre Benutzung keine Garantie dar, dass ein Programm frei von kritischen Wettläufen ist.
Semaphore, die ein beliebiges Recssourcen-Zählen erlauben werden als Zählende-Semaphore (counting semaphores) bezeichnet, während Semaphore, die auf die Werte 0 und 1 (locked/unlocked, unavailable/available) beschränkt sind, als binäre Semaphore (auch Mutex locks) bezeichnet.