我在iOS应用程序中使用SQLite 3。它需要大量的读/写操作,其中许多是同时尝试的。大多数这些函数都在不同的线程中运行,但访问相同的数据库。
以下是我想到的几种方法:
在每次访问数据库(读/写)时,我都会将标记设置为database_open=YES
,如果发现为true,则会在几秒钟内重试。我可以将函数放在数据库层本身。
在同一个线程中运行所有数据库操作。但是,我的用例是这样的,我需要等待一些HTTP调用来完成并将已检索的数据存储到SQLite中。对于这种方法,我必须使所有这些服务器调用同步。不是最好的主意。
如果我的思路方向错误,请建议。
答案 0 :(得分:1)
SQLite supports concurrent access from multiple threads。只需配置SQLITE_CONFIG_MULTITHREAD模式,并从每个线程中单独打开数据库。