phpbar.de logo

Mailinglisten-Archive

AW: [php] Frage zu shmop (?) funktionen

AW: [php] Frage zu shmop (?) funktionen

Alexander Merz php_(at)_phpcenter.de
Fri, 13 Sep 2002 21:29:23 +0200


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