I think the EXCLUSIVE pill (to avoid calling it poison) should have done the job and the busy state is expected and no dead lock, right ?
I would like to assure that sqlite works great in such a thread environment, despite the sqlite parents seems not like the idea...;) Marcus > I tried the BEGIN EXCLUSIVE method, but now the problem is that > thread-A is in the middle of a query doing sqlite3_step() to get > results, and thread-B tries a "begin exclusive" and gets back > SQLITE_BUSY in the deadlock situation :) > > I guess I am forced to use your 2nd method?? > > On 4/8/09, D. Richard Hipp <d...@hwaci.com> wrote: >> >> On Apr 8, 2009, at 2:13 AM, Dave Brown wrote: >> >>> But why is this deadlocking at all? I thought there shouldn't be a >>> problem doing this, especially since thread B is using a transaction. >>> Shouldn't either A or B prevent the other one from accessing the >>> database until they are done? >> >> >> It is a problem because people have asked for more concurrency. So we >> provide more concurrency. But concurrency comes at a price: namely >> the danger of a deadlock. >> >> You can do "BEGIN EXCLUSIVE" to absolutely prevent the deadlock. This >> will also prevent any possibility of concurrency. >> >> Or, since you are dealing with threads within a process, enable shared- >> cache mode and then on the reader thread set "PRAGMA >> read_uncommitted=ON". This will allow the reader to see uncommitted >> changes from the writer, and hence never block for anything. You will >> get great concurrency and no possibility of deadlock. The downside >> there is that you lose isolation - the "I" in "ACID". >> >> Choose your poison. >> >> D. Richard Hipp >> d...@hwaci.com >> >> >> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >> > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users