在同一个后台线程上运行 FMDB 进程?
Posted
技术标签:
【中文标题】在同一个后台线程上运行 FMDB 进程?【英文标题】:Run FMDB processes on the same background thread? 【发布时间】:2011-10-13 08:17:42 【问题描述】:我在使用 fmdb 将数据读取和写入同一数据库时遇到问题。
在我的应用中有一些实例,其中 1 个类会在后台线程上将数据写入数据库,而另一个类会在主线程上从同一个数据库中读取数据,读取和写入进程都处理相当大的数据,例如几百个 NSDictionary。
我听说 fmdb 不是“线程安全的”,当我在上述场景中尝试读写时,它会使我的应用程序崩溃。我也听说过在同一个线程上运行 2 个 fmdb 进程的建议,这样应用就不会崩溃。
我尝试在后台线程中运行它们(使用 NSInvocationOperation)但它崩溃了,我意识到它们实际上是在导致冲突的单独后台线程上运行。
所以问题是,我怎样才能让所有 fmdb 进程在同一个后台线程上运行,这样它们才不会导致我的应用程序崩溃?
或者是否有其他方法可以处理我的 SQL 数据?
*对不起,如果我没有解释清楚,愿意澄清。
感谢阅读!
【问题讨论】:
【参考方案1】:FMDatabaseQueue 是专门为这个案例制作的:https://github.com/ccgus/fmdb
试试看,如果没有意义,请告诉我。
【讨论】:
【参考方案2】:如果您查看 FMDB 的最新文档,您会发现它们现在提供了一个队列,允许线程安全地使用 FMDB。
【讨论】:
以上是关于在同一个后台线程上运行 FMDB 进程?的主要内容,如果未能解决你的问题,请参考以下文章