Серийный режим Sqlite - PullRequest
       1

Серийный режим Sqlite

6 голосов
/ 21 октября 2011

В документации здесь: http://www.sqlite.org/threadsafe.html

Для сериализованного режима он говорит: «В сериализованном режиме SQLite может безопасно использоваться несколькими потоками без ограничений.»

Я хочуубедитесь, что я понимаю гарантию, представленную там.Если одно соединение с базой данных открыто с использованием флага «SQLITE_OPEN_FULLMUTEX» и два потока одновременно пытаются вызвать sqlite3_exec в один и тот же момент, автоматически ли сериализует вызовы Sqlite?

1 Ответ

5 голосов
/ 15 октября 2012

Ответ - да.sqlite3_exec() захватит мьютекс при входе в функцию и освободит его после выхода из функции.Только один поток может владеть мьютексом в любой момент времени, поэтому только один поток может выполнить sqlite3_exec() в любой момент времени.Если два потока пытаются выполнить sqlite3_exec() одновременно, один будет ожидать другого.

...