我的应用程序使用 sqlite 作为后端创建了一个内存数据库 (:memory:)。
我希望我的主线程创建与内存数据库的连接,并且该连接由多个线程共享。这可能吗?SQLite 3.7.8 现在可以下载了。
共享缓存是一种可能的方式吗?
如果您使用序列化模式打开与内存数据库的连接,则该连接可能会在多个线程之间共享。
为此,您的 SQLite 必须编译为线程安全的——这是默认设置。
根据您的应用程序,如果您有许多读取器线程,您可能会通过对磁盘数据库的大型共享缓存或 WAL 模式获得更好的性能。
例子:
sqlite3 *pDb
if (sqlite3_open_v2(":memory:", &pDb, SQLITE_OPEN_FULLMUTEX, NULL) == SQLITE_OK) {
start_thread1_with_db_handle(pDb);
start_thread2_with_db_handle(pDb);
// etc.
}