Многопоточность в Sqlite - PullRequest
       4

Многопоточность в Sqlite

4 голосов
/ 18 октября 2011

Я использую System.data.sqlite для подключения к базе данных Sqlite. Согласно документации Sqlite , пользователи могут включить многопоточность, используя флаг SQLITE_OPEN_NOMUTEX как часть строки подключения. Но я не смог найти ключ в строке подключения, который принимает флаг. Это включено по умолчанию? если нет, то как я могу это сделать?

1 Ответ

3 голосов
/ 18 октября 2011

Режим потоков определяется параметрами компиляции, запуска или выполнения.Более подробная информация здесь:

http://www.sqlite.org/threadsafe.html

В документах сказано, что сериализация - это значение по умолчанию, что означает, что вы можете использовать несколько потоков - это вас защитит.Если вы хотите больше параллелизма, вы можете использовать многопоточный режим.

Если вы используете его в многопоточном режиме, убедитесь, что вызовы синхронизированы для данного соединения.Если вам нужна параллельная работа, используйте несколько соединений и защищайте соединение.

Сам API на это намекает, принимая объект db (соединение) в качестве аргумента для многих функций, которые вы вызываете последовательно.Например, посмотрите на эти функции, которые вы вызываете, чтобы получить ошибку:

int sqlite3_errcode(sqlite3 *db); 
const char *sqlite3_errmsg(sqlite3*);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...