Mercurial > noffle
view src/lock.h @ 165:8ea6b5ddc5a5 noffle
[svn] * src/lock.h,src/lock.c,src/noffle.c: Add lazy lock release. Only release
the lock and close the databases if (a) another process signals us
SIGUSR1 indicating it wants the lock, or (b) it is explicitly requested by
a call to new function Lock_syncDatabases(). When waiting for the lock,
SIGUSR1 the holding process every second. This is all an attempt to
minimise the number of times we need to close and open the database.
When (ha!) the database is replaced by something that can handle
multiple simultaneous writers (with appropriate locking) this won't
be necessary.
author | bears |
---|---|
date | Thu, 25 Jan 2001 13:38:31 +0000 |
parents | 3c71e28c8eef |
children |
line wrap: on
line source
/* lock.h Opening/Closing of the various databases: article overview database, articla database, groups database, outgoing articles database, requests database. Handles global lock. $Id: lock.h 249 2001-01-25 13:38:31Z bears $ */ #ifndef LOCK_H #define LOCK_H #if HAVE_CONFIG_H #include <config.h> #endif #include "common.h" enum LockRequestWait { LOCK_WAIT, LOCK_NOWAIT }; /* Open all databases and set global lock. */ Bool Lock_openDatabases( void ); /* Close all databases and release global lock. */ void Lock_closeDatabases( void ); /* Ensure all databases synced to disc. */ void Lock_syncDatabases( void ); /* Check the global lock held. */ Bool Lock_gotLock( void ); /* Get fetch lock. */ Bool Lock_getFetchLock( enum LockRequestWait wait ); /* Release fetch lock. */ void Lock_releaseFetchLock( void ); /* Check the fetch lock held. */ Bool Lock_fetchLock( void ); #endif