将核心数据保存在一个线程中,如何确保在退出前完成写入?

时间:2010-04-07 21:31:21

标签: iphone objective-c xcode core-data

所以我将小图像保存到核心数据中,这些数据需要真正短时间来保存,比如.2秒但是当用户翻阅滚动视图时我正在这样做所以为了提高响应能力,我正在将保存转移到一个线程。这很好用,一切都得到保存,应用程序响应。但是,核心数据+多线程doco中有一件事让我担心:

“在Cocoa中,只有主线程没有分离。如果需要保存在其他线程上,则必须编写其他代码,以便主线程阻止应用程序退出,直到所有保存操作完成。”< / p>

好的,你是怎么做到的?它只需要持续约.2秒,并且很少会发生,因为应用程序退出的可能性非常低。如何在主线程上运行一些阻止应用程序退出而不阻止gui的东西?

由于

1 个答案:

答案 0 :(得分:3)

使你的保存线程设置为“保存进行中”标志,并让主线程在app delegate的applicationWillTerminate:方法中检查。显然,您需要使用互斥锁来同步对两个线程之间的标志的访问。

如果在应用程序尝试退出时正在进行保存,则主线程会执行pthread_cond_wait;保存线程将在保存完成后使用pthread_cond_signal将其唤醒。