Hello all, I've read http://www.sqlite.org/lockingv3.html but am still not sure about multithread and locking in 3.5.4.
I have a multithread application that has a single connection to a single SQLite3 database. Since it's multithreaded, SQL statements are thrown to a single SQLite3 object concurrently. I'm using http://www.sqlite.org/sqlite-amalgamation-3_5_4.zip on VC8 + WindowsXP. Prior to this version (I was using SQLite2) I'd serialized all these database access using critical sections and didn't care about SQLITE_BUSY or SQLITE_LOCKED since they never happen. It was very simple as I didn't need to implement access retry for a busy case. However, I learned that SQLite 3.5 does mutexing by default. So I removed all synchronization stuff in my SQLite access code, and now it seems it's not working as I intended. Unfortunately I can't reproduce it in my development environment and I've not yet implemented logging to see if it's due to SQLITE_BUSY or SQLITE_LOCKED. I saw it's entering sqlite3_mutex_enter multiple times in the debugger though, so it's thread-safe at least. My question is, 1. Do I still have to synchronize all SQLite access in my client code not to encounter SQLITE_BUSY or SQLITE_LOCKED? (Or is there any better way?) 2. If so, how can I turn off all these mutexes (critical sections) in SQLite 3.5.4? They are needless if I serialize all SQLite access in the client code. Regards, -- sword ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------