Ein
Semaphor (von
sēma „Zeichen“ und φέρειν
pherein „tragen“ – also etwa „Signalgeber“) ist eine
Datenstruktur, die aus einer Ganzzahl und den Nutzungsoperationen „Reservieren/Probieren“ und „Freigeben“ besteht. Sie eignet sich insbesondere zur Verwaltung beschränkter (zählbarer) Ressourcen, auf die mehrere
Prozesse oder
Threads zugreifen sollen, wie etwa Erzeuger und Verbraucher, sowie zur Koordination asynchroner Abläufe. Im Gegensatz zu einem
Lock bzw. einem
Mutex brauchen die Aktivitätsträger, die „reservieren“ und „freigeben“, nicht identisch zu sein.