仪器中的性能核心是哪一个?

问题描述 投票:-1回答:1

我在iPhone X上用A11 CPU在仪器中运行配置文件时。这个CPU有两个性能核心和四个效率核心。

请问有什么方法可以判断出哪个是性能核心?还有关于主线程,GCD会不会把主线程任务更多的放在性能核而不是效率核上?

我很想了解这到底是怎么操作的。

enter image description here

ios swift cpu background-process dispatch
1个回答
1
投票

GCD对不同类型的核心一无所知,GCD也不能决定哪个代码在哪个核心上运行。

GCD决定哪个队列得到哪个线程池的线程,以及下一步在该队列的线程上安排运行哪个代码。

决定一个线程什么时候运行,在哪个核心上运行,是由内核的线程调度来完成的。而内核也会决定哪个GCD线程池里有多少个线程。

主线程和其他线程一样,只是一个线程。一个线程获得多少CPU时间取决于它自己的优先级、其他线程的数量、它们的优先级以及每个线程安排的工作负载量。

由于A11允许所有6个核心同时活动,内核将决定哪个线程得到一个高性能的核心,哪个线程只是一个低性能的核心。高优先级的线程和计算工作量大的线程(那些想要非常频繁地运行,并且通常在运行时用掉全部运行时量子的线程)会优先获得高性能核心。低优先级的线程和计算工作量小的线程(那些想要不经常运行,并且在运行时通常会产生阻塞,虽然他们的运行时量子还没有用完)是低性能核心的首选。虽然,理论上每个线程都可以在任何核心上运行,因为如果线程在等待运行,让核心闲置是很愚蠢的,然而低功率的核心一般是首选,因为这样可以降低功耗,增加电池运行时间。

© www.soinside.com 2019 - 2024. All rights reserved.