SQLite多线程互斥

时间:2016-08-20 08:33:56

标签: c++ multithreading sqlite

我在C ++应用程序中使用SQLite。 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));
}

1 个答案:

答案 0 :(得分:0)

documentation说:

  
      
  1. 多线程即可。在这种模式下,多个线程可以安全地使用SQLite,前提是在两个或多个线程中不同时使用单个数据库连接。
  2.   

因此,您无法为多个线程使用单个连接。

在任何情况下,单个连接只能有一个事务,因此最好为每个线程建立单独的连接。