1

我在使用 fmdb 将数据读取和写入同一数据库时遇到问题。

在我的应用程序中,有一个类会在后台线程上将数据写入数据库,而另一个类会在主线程上从同一个数据库中读取数据,读写进程都处理相当大的数据,比如几百个 NSDictionary .

我听说 fmdb 不是“线程安全的”,当我在上述场景中尝试读写时,它会使我的应用程序崩溃。我还听说过在同一线程上运行 2 个 fmdb 进程的建议,这样应用程序就不会崩溃。

我已经尝试在后台线程中运行它们(使用 NSInvocationOperation)但它崩溃了,我意识到它们实际上是在导致冲突的单独后台线程上运行。

所以问题是,我怎样才能让所有的 fmdb 进程在同一个后台线程上运行,这样它们就不会让我的应用程序崩溃?

或者有没有其他方法可以处理我的 SQL 数据?

*对不起,如果我没有解释清楚,愿意澄清。

谢谢阅读!

4

2 回答 2

3

FMDatabaseQueue 是专门针对这种情况制作的:https ://github.com/ccgus/fmdb

试试看,如果没有意义,请告诉我。

于 2012-03-27T16:33:06.780 回答
1

如果您查看 FMDB 的最新文档,您会发现它们现在提供了一个队列,允许线程安全地使用 FMDB。

于 2012-03-27T15:50:29.083 回答