繁体   English   中英

NSOperation使用GCD,确保所有线程都在同一线程上

[英]NSOperation using GCD, ensure all on the same thread

我有一个“并发的” NSOperation ,在工作期间它使用一些内部使用GCD的控制器类。 当这些控制器类返回其完成块时,该完成块在另一个线程上。

我知道我可以将当​​前线程存储在操作start方法中并运行performSelectorOnThread:但是理想情况下,我想将完成内容包装在GCD块中,并分派到与操作开始时相同的线程上。 使用GCD甚至可以做到这一点,因为我只能指定要分发的队列。

将这项工作恢复到操作开始的同一线程上的最佳方法是什么? 除了我已经提出的建议外,除非这是最好的方法。

操作完成后,必须在主线程上完成UI更新或任何其他相关的操作。 以下链接可能对您有用,关于CGD。

http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

我认为这真的不可能/不建议。 从iOS 4开始,NSOperation使用GCD,并且随着GCD管理我的线程-我认为我不应该保留对它们的引用。

我确实找到了一些在特定线程上执行代码块的util方法。 请参阅Mike Ash的《实用程序块》本文做类似的事情。

因为我的目标是将核心数据调用保持在同一线程上,所以我选择升级代码以将父/子托管对象上下文与NSPrivateQueueConcurrencyType一起使用,然后在托管对象上下文上使用performBlock:以确保我所有的回叫单独的线程已由核心数据正确执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM