Mailinglisten-Archive |
"Lemberg, Sascha" wrote:
> moin,
> flock()-funktion benützt ?
rein Interessehalber (und vielleicht zu Gunsten des Manuals):
Wer hat Erfahrungen mit flock() in Multithred-Anwendungen,
insbesondere mit PHP als Modul in einem reinen Multithreaded Server
(ISAPI, ..., Apache/WIN32(?)) ?
Meine Befürchtung ist, das evtl. das eine oder andere Betriebssystem
Locks auf Prozess- und nicht auf Filedescriptorebene verwaltet, so
daß innerhalb einer Multithread-Anwendung, bei der ja alle Treads
in einem einzigen gemeinsamen Prozess-Kontext laufen, die Sperran-
forderungen nicht greifen, auch wenn die einzelnen Threads eigentlich
unabhängig voneinander operieren ...
Das ist jetzt völlig ins blaue geschossen, aber ...
... ich höre gerade folgendens:
'man flock' auf Solaris:
[...]
Use of these interfaces should be restricted to only appli-
cations written on BSD platforms. Use of these interfaces
with any of the system libraries or in multi-thread applica-
tions is unsupported.
Locks are on files, not file descriptors. That is, file
descriptors duplicated through dup(2) or fork(2) do not
result in multiple instances of a lock, but rather multiple
references to a single lock. If a process holding a lock on
a file forks and the child explicitly unlocks the file, the
parent will lose its lock. Locks are not inherited by a
child process.
[...]
habe allerdings keine Ahnung, wie das auf MS-Plattformen aussieht ...
--
Hartmut Holzgraefe hartmut_(at)_six.de http://www.six.de +49-711-99091-77
Besuchen Sie uns auf der Buchmesse in Frankfurt, Halle 4.0, Stand D 1117
und auf der Systems in München , Halle C2, Stand 126
php::bar PHP Wiki - Listenarchive