设为首页 加入收藏

TOP

优先级反转那些事儿(十五)
2023-07-23 13:26:40 】 浏览:694
Tags:那些事
sp;  ts_priority;           /* priority of turnstile (WL) */ #if DEVELOPMENT || DEBUG     uint8_t                       ts_state;              /* current state of turnstile (IL) */     queue_chain_t                 ts_global_elm;         /* global turnstile chain */     thread_t                      ts_thread;             /* thread the turnstile is attached to */     thread_t                      ts_prev_thread;        /* thread the turnstile was attached before donation */ #endif };

优先级数值

在验证环节有一些优先级数值,这里借助「Mac OS® X and iOS Internals 」解释一下:实验中涉及到的优先级数值都是相对于Mach层而言的,且都是用户线程数值

  1. 用户线程的优先级是0~63;
    1. NSQualityOfServiceBackgroundMach层级优先级数是4;
    2. NSQualityOfServiceUtilityMach层级优先级数是20;
    3. NSQualityOfServiceDefaultMach层级优先级数是31;
    4. NSQualityOfServiceUserInitiatedMach层级优先级数是37;
    5. NSQualityOfServiceUserInteractiveMach层级优先级是47;
  2. 内核线程的优先级是80~95;
  3. 实时系统线程的优先级是96~127;
  4. 64~79被保留给系统使用;

图片

总结

本文主要阐述了优先级反转的一些概念和解决思路,并结合iOS平台的几种锁进行了详细的调研。通过深入的理解,可以去规避一些不必要的优先级反转,从而进一步避免卡死异常。字节跳动 APM团队也针对线程的优先级做了监控处理,进而达到发现和预防优先级反转的目的。

加入我们

字节跳动 APM 中台致力于提升整个集团内全系产品的性能和稳定性表现,技术栈覆盖iOS/Android/Server/Web/Hybrid/PC/游戏/小程序等,工作内容包括但不限于性能稳定性监控,问题排查,深度优化,防劣化等。长期期望为业界输出更多更有建设性的问题发现和深度优化手段。

欢迎对字节APM团队职位感兴趣的同学投递简历到邮箱 xushuangqing@bytedance.com 。

参考文档

首页 上一页 12 13 14 15 下一页 尾页 15/15/15
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇从 iOS App 启动速度看如何为基础.. 下一篇uniapp ios原生插件开发 (framewo..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目