我的應用程序使用sqlite作爲後端創建內存數據庫(:內存:)。sqlite內存數據庫和多線程
我想讓我的主線程創建一個到內存數據庫的連接,並且這個連接被多個線程共享。這可能嗎? SQLite 3.7.8現在可供下載。
是the shared cached一個可能的方式去?
我的應用程序使用sqlite作爲後端創建內存數據庫(:內存:)。sqlite內存數據庫和多線程
我想讓我的主線程創建一個到內存數據庫的連接,並且這個連接被多個線程共享。這可能嗎? SQLite 3.7.8現在可供下載。
是the shared cached一個可能的方式去?
如果使用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.
}
我不這麼認爲,因爲每個連接':內存:'在內存中創建一個獨立的DB ...看到http://www.sqlite.org/inmemorydb html的 – Yahia
也許的[這個問題]重複[1] [1]:http://stackoverflow.com/questions/3267077/can-i-achieve-scalable-multi-threaded-access- to-an-in-in-memory-sqlite-database –
@NicolasModrzyk對你的鏈接沒有答案。然而,這確實是同一個問題。 – cateof