IOS中的Sqlite3并发问题

时间:2013-10-07 13:04:49

标签: ios sqlite

我在iOS应用程序中使用SQLite 3。它需要大量的读/写操作,其中许多是同时尝试的。大多数这些函数都在不同的线程中运行,但访问相同的数据库。

以下是我想到的几种方法:

  1. 在每次访问数据库(读/写)时,我都会将标记设置为database_open=YES,如果发现为true,则会在几秒钟内重试。我可以将函数放在数据库层本身。

  2. 在同一个线程中运行所有数据库操作。但是,我的用例是这样的,我需要等待一些HTTP调用来完成并将已检索的数据存储到SQLite中。对于这种方法,我必须使所有这些服务器调用同步。不是最好的主意。

  3. 如果我的思路方向错误,请建议。

1 个答案:

答案 0 :(得分:1)

SQLite supports concurrent access from multiple threads。只需配置SQLITE_CONFIG_MULTITHREAD模式,并从每个线程中单独打开数据库。