2008-12-10 3 views
5

Мне нужны операции доступа к базе данных из нескольких потоков, через одноэлементный объект, который поддерживает соединение с базой данных. Я читал на сайте SQLite3, говоря, что «структура sqlite3 может использоваться только в том же потоке, который называется sqlite3_open(), чтобы создать его. Вы не могли открыть базу данных в одном потоке, а затем передать дескриптор в другой поток, чтобы он мог использовать '. Мне интересно в моей ситуации, есть ли какая-либо угроза нить-небезопасности?Безопасна ли SQLite в этой ситуации?

ответ

11

Если библиотека SQLite скомпилирована с -DSQLITE_THREADSAFE, вы в порядке с более поздними версиями SQLite 3.

Автор SQLite says:

Начиная с версии 3.5.0, SQLite навязывает это само по себе, используя свои
собственные внутренние мьютексы, так что приложение может свободно (попытаться) использовать
одну базу данных соединение из нескольких потоков одновременно.

Смежные вопросы