我一直在尝试阅读GCD并尝试弄明白。我读了很多地方,一个应该总是使用GCD,如果一个人做了一些繁重的工作,这将冻结用户界面,我确实理解,但GCD也可以仅仅用于性能。假设我有一个需要运行10次的循环,每次迭代都是数据量很大。是否会提高性能以运行不同线程的这些迭代的一半,以便两个线程共享工作负载,或者它仍然需要相同的时间来完成循环?
答案 0 :(得分:2)
这完全取决于你的循环逻辑设计,你的问题没有正确的答案,因为你仍然需要定义如何加入和合并你对这个数据所做的两个不同的处理,数据在哪里将被保存,你要解决的逻辑问题是什么
然而,您尝试在两个线程中实现的目标可能导致您过早优化,因此在开始优化代码之前,请考虑是否值得您将要引入代码的复杂性< / p>
答案 1 :(得分:2)
如果您的设备有两个处理器,它将有助于运行两个串行gdc队列。但是,我们的想法是你不应该关心,用dispatch_queue_create
调用DISPATCH_QUEUE_CONCURRENT
并让设备找出并行运行的最佳任务数。