我在使用fmdb读取和写入同一数据库时遇到问题。
在我的应用程序中有一些实例,其中1个类将数据写入后台线程的数据库,而另一个类将从主线程上的同一数据库读取数据,读取和写入进程都处理相当大的数据,如几百个NSDictionary。
我听说fmdb不是“线程安全的”,当我尝试在上面的场景中进行读写操作时会崩溃我的应用程序。我也听说过在同一个线程上运行2个fmdb进程的建议,以便应用程序不会崩溃。
我已尝试在后台线程中运行它们(使用NSInvocationOperation)但它崩溃了,我意识到它们实际上是在不同的后台线程上运行而导致冲突。
所以问题是,如何让所有fmdb进程在同一个后台线程上运行,这样它们就不会崩溃我的应用程序?
或者有处理我的SQL数据的替代方法吗?
*对不起,如果我没有清楚解释,愿意澄清。
感谢阅读!
答案 0 :(得分:3)
FMDatabaseQueue专门为此案例制作:https://github.com/ccgus/fmdb
尝试一下,如果没有意义 - 请告诉我。
答案 1 :(得分:1)
如果您查看FMDB的最新文档,您会看到它们现在提供了一个允许线程安全使用FMDB的队列。