Mutex
Um den gegenseitigen Ausschluss zu erreichen, wird dem Datenobjekt ein Kontrollelement zugeordnet, das von einem Prozess (bzw. einem Thread) immer dann beachtet werden muss, wenn er Programmcode ausführt, der auf dieses Datenobjekt zugreift (so genannte kritische Abschnitte). Der Effekt ist, dass der Prozess warten muss wenn gerade ein anderer auf diese Daten zugreift.
Am verbreitetsten ist die Umsetzung von Mutex über das so genannte Monitor-Konzept, das Gleiche lässt sich aber auch mit Locks oder Semaphorenen erreichen. Das Konzept lässt sich mittels Read-Write-Locks so verfeinern, dass sich Prozesse, die nur Daten lesen, gegenseitig nicht behindern - das ist besonders für den Zugriff auf Dateien und Datenbanken verbreitet.
Einige Programmiersprachen unterstützen Mutex als Teil der Sprache selbst, insbesondere Concurrent Pascal, Ada und Java. Für fast alle Sprachen gibt es Bibliotheken, die ein Mutex-System implementieren, häufig ist dies sogar Teil der Standard-API bzw. der Laufzeitumgebung.
Eine gute Implementierung von Mutex ist nur mit einem Betriebssystem möglich, dessen Scheduler solche Konzepte unterstützt. Auf anderen Systemen (insbesondere Echtzeitsystemen) muss auf Spinlocks zurückgegriffen werden, die die Performanz durch Busy Waiting erheblich beeinträchtigen.
Siehe auch: Lock, Semaphor, Monitor