所以我将小图像保存到核心数据中,这些数据需要真正短时间来保存,比如.2秒但是当用户翻阅滚动视图时我正在这样做所以为了提高响应能力,我正在将保存转移到一个线程。这很好用,一切都得到保存,应用程序响应。但是,核心数据+多线程doco中有一件事让我担心:
“在Cocoa中,只有主线程没有分离。如果需要保存在其他线程上,则必须编写其他代码,以便主线程阻止应用程序退出,直到所有保存操作完成。”< / p>
好的,你是怎么做到的?它只需要持续约.2秒,并且很少会发生,因为应用程序退出的可能性非常低。如何在主线程上运行一些阻止应用程序退出而不阻止gui的东西?
由于
答案 0 :(得分:3)
使你的保存线程设置为“保存进行中”标志,并让主线程在app delegate的applicationWillTerminate:方法中检查。显然,您需要使用互斥锁来同步对两个线程之间的标志的访问。
如果在应用程序尝试退出时正在进行保存,则主线程会执行pthread_cond_wait;保存线程将在保存完成后使用pthread_cond_signal将其唤醒。