SQLite Multithread Mutex

c++ multithreading sqlite

642 просмотра

1 ответ

Я использую SQLite в своем приложении C ++. Режим многопоточности SQLite настроен на многопоточность, поэтому допускается использование нескольких потоков, совместно использующих одно соединение с базой данных. В этом случае мне нужно обернуть работу базы данных, как показано ниже? Или это не обязательно?

void SomeClass::someDbOperationOnAThread(void *arg) {
    sqlite3_mutex_enter(sqlite3_db_mutex(db));
    // Perform some queries on the database
    sqlite3_mutex_leave(sqlite3_db_mutex(db));
}
Автор: KBancho Источник Размещён: 08.11.2019 11:04

Ответы (1)


0 плюса

В документации сказано:

  1. Многопоточный . В этом режиме SQLite может безопасно использоваться несколькими потоками при условии, что ни одно соединение с базой данных не используется одновременно в двух или более потоках.

Таким образом, вы не можете использовать одно соединение для нескольких потоков.

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

Автор: CL. Размещён: 20.08.2016 12:43
Вопросы из категории :
32x32