iOS GCD Max 并发操作

标签 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 */
    };


  }

最佳答案

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

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

关于iOS GCD Max 并发操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36356673/

相关文章:

iphone - UIView两个动画共存

ios - 是否可以在 UITableViewCell 中包含一个 UITableView?

iphone - 如果 UITableViewCell 不可见则为 nil

ios - NSMutableAttributedString:如何在 iOS 上以编程方式删除最后一个字符?

python - 如何并发多次运行相同的异步函数?

ios - Swift UITableView willSelectRowAt 无法正常工作

ios - Web 服务请求格式

go - 在新函数调用时取消goroutine

java - 如何在单独的线程中运行任务特定的时间并返回结果?