On 5/23/2012 1:51 PM, Sander Jansen wrote:
I was always under the impression that prepared statements can only be
used from one thread at a time, so if 2 threads need to perform the
same query independently, you need to have a prepared statement for
each thread. Now I came across the following which seems to contradict
this:

"
http://www.sqlite.org/c3ref/c_config_getmalloc.html#sqliteconfigserialized

There is no contradiction. Basically, there's a mutex associated with a connection, and sqlite3_step as well as other API functions acquire it on entry and release it on exit. So, while it is safe to call sqlite3_step on the same statement from multiple threads, it is rather pointless, since a) all these calls are going to be serialized on the mutex so you won't actually get any parallelism out of this, and b) the statement is traversing the same single resultset, so each thread will see some random subset of the rows, depending on how their calls happen to interleave.
--
Igor Tandetnik

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to