Semaphoren-Beispiel

Um 2007 rum habe ich mal ein Beispielprogramm geschrieben das zeigt wie man benamte Semaphoren unter Linux nutzt. Dies habe ich nun wiedergefunden, den Code ein wenig überflogen, die GPLv2 Lizenz hinzugefügt und online gestellt: Benamte Semaphoren unter Linux.

Kurze Erklärung zu Semaphoren: Semaphoren sind eine Möglichkeit parallele Zugriffe auf eine Resource (bzw. mehrere, aber begrenzte Resourcen ähnlichen Typs) zu regeln. Zum Beispiel wenn man sicherstellen will, dass bei 2 parallelen Zuggleisen und 2 wartendenen Zügen nur ein Zug zur gleichen Zeit die Weiche benutzen darf.

Anderes Beispiel: Eine Firma hat 5 Drucker und 10 Leute drucken um 2min versetzt jeweils ein Dokument mit 250 Seiten. Die ersten 5 Leute bekommen jeweils ihren “eigenen” Drucker zugewiesen und die anderen 5 müssen eben warten - ohne eine Semaphoren-Technik würde es dazu führen das die Blätter von Nutzer 1 mit denen von Nutzer 6 gemischt aus dem Drucker kämen - ein Chaos :-)

Semaphoren stellen also eine Art der Zugriffsregelung dar, und zwar immer dann wenn Vorgänge parallel auftreten können ohne das man vorher eine Möglichkeit hat sich abzustimmen.

Weitere Informationen hält Wikipedia bereit.