在谷歌给安卓 17 新增的DeliQueue系统中,无锁的数据结构就给消息队列 MessageQueue 进行了底层重构。谷歌用“熟食店取号”来打比方,说明线程不用死等解锁,而是可以像取餐那样灵活调度。这种新方法让软件在处理任务时互相等待的时间变短了,结果是应用丢帧率降低了4%。据Android Authority报道,IT之家消息称,这个变化让系统界面的流畅度提升了7.7%。用户以前滑动卡顿或者操作迟钝,通常是因为系统为了让UI显示顺利而被迫丢掉了一些帧 Dropped frames。造成这种问题的根本原因在于线程访问核心组件 MessageQueue 时需要排队。一旦某个线程锁死了队列,其他线程就只能干等着,关键任务也就没法及时处理。现在的DeliQueue系统不再是一次只服务一个线程的老办法了,它能更精确地控制特定的内存位置。这就意味着线程不用长时间死等锁释放,而是可以更灵活地并行去干活。谷歌内部还在测试DeliQueue并修复了两个漏洞。