iOS GCD Max并发操作

时间:2016-04-01 12:43:00

标签: ios objective-c concurrency cpu grand-central-dispatch

在iPad上可以开始多少并行操作以获得最佳性能?在每次运行查询操作,计算等...

这取决于iPad型号(CPU)?

      int count = [objects count];
  if (count > 0)
  {
    dispatch_group_t group = dispatch_group_create();
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    for (int i = 0; i < count; i++)
    {
      dispatch_group_async(group, queue, ^{
        for (int j = i + 1; j < count; j++)
        {
          dispatch_group_async(group, queue, ^{
            /** LOTS AND LOTS OF WORK FOR EACH OBJECT **/
          });
        }
      });
    }

        dispatch_group_notify(group, queue, ^{
/** END OF ALL OPERATIONS */
    };


  }

1 个答案:

答案 0 :(得分:1)

这基本上是一个用户体验问题。取决于最终用户的需求。
他是否真的需要所有那些快速启动和完成的计算? 你能延迟一些或大部分吗?
通过每次计算的进度(进度条)通知用户并在完成时通知他是一种好的做法。
让他选择开始/停止/暂停(这是一个非常重要的特征)。

如果所有任务都是本地的 - CPU密集型,与网络获取资源无关,那么它取决于每个CPU设备 - 它可以并行运行多少个线程。