我的应用程序使用sqlite作为后端创建一个内存数据库(:memory :)。
我希望我的主线程创建到内存数据库的连接,并且此连接由多个线程共享。这可能吗? SQLite 3.7.8现在可供下载。
the shared cached是可行的方法吗?
答案 0 :(得分:3)
如果使用serialized mode打开与内存数据库的连接,则可以在多个线程之间共享连接。
要使其正常工作,必须编译SQLite threadsafe - 这是默认值。
根据您的应用程序,使用磁盘数据库的大型共享缓存可以获得更好的性能,如果您有许多读取器线程,则可以使用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.
}