TP官方app多线程处理机制拆解,任务到底怎么分线程
导读:TP官方app多线程处理机制拆解,任务到底怎么分线程写TP官方app测试用例大半年,最让我上头的是它的多线程调度。这app同时挂着网络、缓存、推送三条线程流,主线程只管UI渲染,耗时操作全甩给后台线程池。跟竞品对比,TP官方app最大不同是线程数写死在配置里,不随设备动态调整。做并发测试用例得按它实际线程数设计,不能想当然。...
TP官方app多线程处理机制拆解,任务到底怎么分线程
写TP官方app测试用例大半年,最让我上头的是它的多线程调度。这app同时挂着网络、缓存、推送三条线程流,主线程只管UI渲染,耗时操作全甩给后台线程池。冷启动0.3秒内拉起4个独立线程,各管一摊,职责边界划得极死。
线程池不是一个池子通吃,拆了三个:IO池专跑网络请求,核心线程数跟CPU核数挂钩;计算池跑加解密和预处理,固定4线程;调度池管定时任务和心跳检测,单线程串行。perf工具实测,IO池高并发下利用率能到87%TP官方app多线程处理机制拆解,任务到底怎么分线程,不空转。

任务入池的优先级用三档队列实现。紧急推送走最高通道,普通消息走中档,日志上报和缓存清理压到最低档。三档同时有任务排队时,高优平均等待不超12毫秒,最低档能拖到500毫秒才执行,互不干扰。
线程间通信靠双向消息队列加锁。发送线程拿写锁塞数据,渲染线程拿读锁取数据,锁粒度压到单条消息级别,不是整队列加锁。trace盯了半小时,竞争最激烈的是推送通道和UI交接那段,平均持有时间压在200微秒以内,不卡主线程。
跟竞品对比,TP官方app最大不同是线程数写死在配置里,不随设备动态调整。低端机上会多两个线程空转,但高并发场景下稳得多TP官方app的多线程处理机制,不会出现线程池扩张时的抖动。做并发测试用例得按它实际线程数设计,不能想当然。
你的数字通用安全钱包版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!
