c++ - SQLite 多线程互斥

标签 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));
}

最佳答案

documentation说:

  1. Multi-thread. In this mode, SQLite can be safely used by multiple threads provided that no single database connection is used simultaneously in two or more threads.

因此您不能为多个线程使用单个连接。

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

关于c++ - SQLite 多线程互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052151/

相关文章:

c++ - Android Studio 中的 Gradle 任务排序问题

c++ - 如何将非托管 C++ 中的常量公开给 C#

java - @PreDestroy 没有被调用以用于 Runnable

java - 为什么当我在 SQLite 中登录页面时我的页面自动关闭?

database - 如何保存 SQLite3 工作

c++ - c++ 中的异步 RPC(使用 visual studio)

c++ - 如何使用 QwtSpline 创建 B 样条曲线

java - 如何在Android中等待Picasso完成加载图像?

java - Bluetoothsocket 影响播放和录制音频的线程

android - SQLite的FTS3如何实现模糊搜索?