在同一个后台线程上运行FMDB进程?

时间:2011-10-13 08:17:42

标签: iphone multithreading fmdb

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

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

我听说fmdb不是“线程安全的”,当我尝试在上面的场景中进行读写操作时会崩溃我的应用程序。我也听说过在同一个线程上运行2个fmdb进程的建议,以便应用程序不会崩溃。

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

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

或者有处理我的SQL数据的替代方法吗?

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

感谢阅读!

2 个答案:

答案 0 :(得分:3)

FMDatabaseQueue专门为此案例制作:https://github.com/ccgus/fmdb

尝试一下,如果没有意义 - 请告诉我。

答案 1 :(得分:1)

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