LockFile() and UnlockFile() are working
John K. Hohm
jhohm at acm.org
Fri Mar 21 14:15:47 CST 2003
> This resolution will make a ton of business apps based on desktop database
> software that much closer to working.
I'm not so sure. I expect most database software depends on the mandatory
nature of LockFile(), i.e. that a ReadFile() or WriteFile() from another
process on a locked region fails with ERROR_LOCK_VIOLATION. Typically, one
process will LockFile() an area, then update on-disk structures in such a way
that another process reading during the update would get confused were it not
for ReadFile() refusing to read the locked bytes. Note that the reading
process does not LockFile() to read, it just tries ReadFile() and handles its
failure (typically by waiting and trying again later).
For database software that uses read/write locks via LockFileEx(), the standard
Unix advisory lock semantics are just fine, and those patches are indeed the
ticket. However, advisory locking is generally more difficult to manage, and
LockFileEx() is not supported on Windows 95/98/Me, so I doubt many apps use it.
More information about the wine-devel