I would suggest using a queue approach. Its not as bad as it sounds. Have that queue processed by a single thread, which controls the database writes. That way you can save the time for other operations, such as database open/close etc.
You can't avoid the "can't read while writing" though. You'll have to figure out something for this. I'd use a named mutex (or similar IPC) for this. Or: Serialize all database access via a queue and a single threaded queue processor... The results are most likely better using a (properly written) queue, rather than IPC. Mike -----Ursprüngliche Nachricht----- Von: Gussimulator [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 12. Juli 2006 19:47 An: sqlite-users@sqlite.org Betreff: Re: [sqlite] Problems with Multi-Threaded Application. Yes, in theory. However, when about 100 queries are fired in a second, only a few get the data populated.. I can not tell when to start or end the transactions, because events are fired from a third-party system. So I used a timer, set to 5 seconds.. then tried with 10 seconds, got the same result anyway (timer to a procedure that would commit and begin transaction). >From 100 events about 30 were "processed". About the "cant read while writing", how to avoid this?, I cant stop my system while using the database. There would be no point on having a database then. ----- Original Message ----- From: "Jay Sprenkle" <[EMAIL PROTECTED]> To: <sqlite-users@sqlite.org> Sent: Wednesday, July 12, 2006 12:59 PM Subject: Re: [sqlite] Problems with Multi-Threaded Application. > On 7/12/06, Gussimulator <[EMAIL PROTECTED]> wrote: >> Hello, >> >> I'm currently using SQLite3 on my multi-threaded software. >> >> I have tried several ways for dealing with my issue, however, I came to >> the conclusion that there must be some trick I havent been told of. > > It wasn't clear to me when I started that you can have as many readers as > you > want, but only one process may write to the database AND no other process > may read it while you are writing. If you use transactions and retry > when the database is locked it works fine and no data will be lost. > > > -- > SqliteImporter and SqliteReplicator: Command line utilities for Sqlite > http://www.reddawn.net/~jsprenkl/Sqlite > > Cthulhu Bucks! > http://www.cthulhubucks.com