[英]In GCD, are all tasks in a serial queue guaranteed to run in the same thread?
[英]NSOperation using GCD, ensure all on the same thread
我有一个“并发的” NSOperation
,在工作期间它使用一些内部使用GCD的控制器类。 当这些控制器类返回其完成块时,该完成块在另一个线程上。
我知道我可以将当前线程存储在操作start方法中并运行performSelectorOnThread:
但是理想情况下,我想将完成内容包装在GCD块中,并分派到与操作开始时相同的线程上。 使用GCD甚至可以做到这一点,因为我只能指定要分发的队列。
将这项工作恢复到操作开始的同一线程上的最佳方法是什么? 除了我已经提出的建议外,除非这是最好的方法。
操作完成后,必须在主线程上完成UI更新或任何其他相关的操作。 以下链接可能对您有用,关于CGD。
我认为这真的不可能/不建议。 从iOS 4开始,NSOperation使用GCD,并且随着GCD管理我的线程-我认为我不应该保留对它们的引用。
我确实找到了一些在特定线程上执行代码块的util方法。 请参阅Mike Ash的《实用程序块》或本文做类似的事情。
因为我的目标是将核心数据调用保持在同一线程上,所以我选择升级代码以将父/子托管对象上下文与NSPrivateQueueConcurrencyType一起使用,然后在托管对象上下文上使用performBlock:以确保我所有的回叫单独的线程已由核心数据正确执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.