iOS线程中影响任务执行速度的影响因素

471 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

iOS中印象任务执行速度的因素有以下几种。

  • CPU的调度情况
  • 任务的复杂度
  • 任务的优先级
  • 线程状态 目前iOS中,线程优先级的threadPriority属性已经弃用,被NSQualityOfService类型的qualityOfService所代替
typedef NS_ENUM(NSInteger, NSQualityOfService) { 
    NSQualityOfServiceUserInteractive = 0x21, 
    NSQualityOfServiceUserInitiated = 0x19, 
    NSQualityOfServiceUtility = 0x11, 
    NSQualityOfServiceBackground = 0x09, 
    NSQualityOfServiceDefault = -1
} 
API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0));

NSQualityOfService:服务质量。用于表示工作的性质和对系统的重要性。当存在资源争用时,使用高质量的服务类比使用低质量的服务类获得更多的资源

  • NSQualityOfServiceUserInteractive:用于直接涉及提供交互式UI的工作。例如:处理控制事件或在屏幕上绘图
  • NSQualityOfServiceUserInitiated:用于执行用户明确要求的工作,并且为了允许进一步的用户交互,必须立即显示这些工作的结果。例如:在用户在邮件列表中选择邮件后加载邮件
  • NSQualityOfServiceUtility:用于执行用户不太可能立即等待结果的工作。这项工作可能是由用户请求的,也可能是自动启动的,并且通常使用非模式进度指示器在用户可见的时间尺度上操作。例如:定期内容更新或批量文件操作,如媒体导入
  • NSQualityOfServiceBackground:用于非用户发起或不可见的工作。通常,用户甚至不知道正在进行这项工作。例如:预抓取内容、搜索索引、备份或与外部系统同步数据
  • NSQualityOfServiceDefault:表示没有明确的服务质量信息。只要可能,适当的服务质量是根据可用的资源确定的。否则,使用NSQualityOfServiceUserInteractiveNSQualityOfServiceUtility之间的服务质量级别