it's better to use a connection per thread... the connection resource isn't
very big...
even if you wrap the sqlite3_ calls... you'll need to wrap the entire
lifetime of the statment... if you do a execute and then start stepping and
getting values while another thread starts another statement... that's 3
individual locks, but it doesn't lock the context of the statement being
used... it will lead to bizarre crashes in the database; similar to
double-releasing memory or delayed reference of memory that has been
released.

On Sun, Feb 8, 2015 at 3:00 AM, Dan Kennedy <danielk1...@gmail.com> wrote:

> On 02/08/2015 04:30 PM, Neo Anderson wrote:
>
>> The doc says:
>>
>> Multi-thread.
>> In this mode, SQLite can be safely used by multiple threads provided that
>> no single database connection is used simultaneously in two or more
>> threads.
>>
>> I have a scenario that every sqlite3_calls around a single database
>> connection is protected by a recursive mutex, but I have very strange
>> runtime error in sqlite3.c and each time the error occurs at a different
>> place.
>>
>> Does this mean the following statement is true:
>>
>> In muti-thead mode, a single database connection cannot be shared among
>> threads even if any activity around the connection is protected by a mutex.
>>
>
> Not true.
>
> The only difference between multi-threaded and serialized mode is that,
> internally, every sqlite3_xxx() API call grabs a recursive mutex to prevent
> two threads from simultaneously accessing the database handle structure.
> i.e. the same thing your code is doing externally.
>
> Note that calls on statement handles (i.e. sqlite3_step(),
> sqlite3_column_text() etc.) count as calls on the database handle that
> created them. So you need to protect them with the same mutex.
>
> Does the application work if you configure SQLite to serialized mode?
>
> Dan.
>
>
>
> _______________________________________________
> 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

Reply via email to