所以我将小图像保存到核心数据中,这需要真的很短的时间来保存,比如 0.2 秒,但我是在用户翻阅 ScrollView 时这样做的所以为了提高响应速度,我将保存移动到一个线程。这很好用,所有内容都已保存并且应用程序响应迅速。然而,核心数据+多线程doco中有一件事让我担心:
“在 Cocoa 中,只有主线程是不分离的。如果你需要在其他线程上保存,你必须编写额外的代码,这样主线程会阻止应用程序退出,直到所有保存操作完成。”
好的,你是怎么做到的?它只需要持续 ~ .2 秒,而且它很少会发生,因为应用程序因保存某些内容而退出的可能性非常低。我如何在主线程上运行一些东西来防止应用程序退出并且不阻止 gui?
谢谢
最佳答案
让您的保存线程设置一个“正在保存”标志,并让主线程在应用委托(delegate)的 applicationWillTerminate: 方法中检查。显然,您需要使用互斥锁来同步两个线程之间对标志的访问。
如果应用程序试图退出时正在进行保存,则主线程执行 pthread_cond_wait;保存线程将在保存完成后使用 pthread_cond_signal 将其唤醒。
关于iphone - 在一个线程中保存核心数据,退出前如何保证其写入完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596087/