Hello,
I have no inside-knowledge from SQLite, but I'am in the circumstance
to easily do this experiment. Hope I understand it right and that you
consider a sort of pipe-lining. Anyway, I started the two threads A
and B, and made A exclusively do all the sqlite3_prepare calls, and B
the rest, including sqlite3_step. This almost immediately raises
"library routine called out of sequence". It occurs as soon as the
processing of A and B overlap, that means A is preparing statement #2
while B is still executing #1. So the experimental conclusion is that
this won't work. But this applies only to the pipelining idea. The
serializing to use a single connection may still offer an interesting
new locking model.
Regards, Ed Pasma
Op 14-mei-2007, om 13:04 heeft Jiri Hajek het volgende geschreven:
Hello,
I have tried to search all the documentation about threading in
SQLite, but
I'm still somewhat confused.
It's often suggested to create a pool of sqlite3 structures, but
what if I
would like to have only only sqlite3 connection and serialize all
the DB
operations to one thread (name it 'A') that would prepare and
execute all
the queries. I guess that this would work well...
However, it would be too time consuming to serialize every call to
sqlite3_step(), so I wonder whether it can be called in another
thread. So
my scenario is:
1. Thread B wants to open a query 'SELECT * FROM Tbl1'
2. Thread A is used to prepare the query 'SELECT * FROM Tbl1' using
sqlite3_prepare16_v2() and using the same sqlite3 DB connection as for
possibly some other running SQL statements.
3. Thread B now repeatedly calls sqlite3_step(),
sqlite3_column_text16() and
similar functions in order to get all rows from DB.
4. Thread A is used to call sqlite3_finalize() on the openned query.
So my questions are:
a. Would the code described above work.
b. In step 3., do I have to somehow make sure that calls to
sqlite3_step()
don't interfere with other SQLite processing in thread A, e.g. by
Windows
CriticalSections? Is anything like this also needed for
sqlite3_column_text16()?
Thanks for any explanation,
Jiri
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------