Mailinglisten-Archive |
Wolfgang Hauck wrote: > Was passiert denn da wenn zwei Leute gleichzeitig in den gemeinsamen Speicher > reinschreiben? > A....karte gezogen ;-)) Nö, nicht ohne Grund stehen die Semaphoren-Funktionen neben denen für Shared-Memory. Eine Semaphore ist im Prinzip eine einzelne binäre Speicherstelle. Folgendes Szenario: Die Programm A und B können in den SHM schreiben. Normalerweise würde es bei gleichzeitigen Zugriff tatsächliche krachen. Deshalb belegt Programm A die Semaphore MANFRED - intern wird die Speicherstelle einfach auf "true" gestellt. Programm A schreibt jetzt. Im selben Moment versucht auch B zu schreiben, und will natürlich auch Semaphore MANFRED belegen - das Betriebssystem merkt aber "Huh, die ist ja schon 'true'" und blockiert erstmal die weiter Ausführung des Befehls. Damit wartet auch Programm B. Ist Programm A mit dem Schreiben fertig, gibt es Semaphore MANFRED wieder frei. Das Betriebsystem merkt nun "Schön MANFRED ist wieder false, ich kann sie/ihn mit true belegen". Damit läuft die Funktion weiter und Programm B kann endlich schreiben, wenn es vor Langeweile nicht gestorben ist. Das selbe Prinzip kann man auch auch mit Hilfe des Lockings/Unlockings einer Datei realisieren, z.B. der Datei ELFRIEDE. Funktioniert aber nicht unter Windows 95/98.
php::bar PHP Wiki - Listenarchive