当我在使用A11处理器的iPhone X上的仪器中运行配置文件时。这款CPU有两个性能内核和四个效率内核。
我想问一下,是否有一种方法可以区分哪一个是性能核心?至于主线程,GCD是否会将主线程任务更多地放在性能核心上,而不是效率核心?
我非常有兴趣了解这实际上是如何工作的。

发布于 2020-05-23 09:27:12
GCD对不同类型的内核一无所知,也不能决定哪些代码在哪个内核上运行。
GCD决定哪个队列获取哪个线程池的线程,以及计划在队列的线程上运行哪个代码。
决定线程何时运行以及在哪个内核上运行是由内核的线程调度来完成的。内核还决定在哪个GCD线程池中有多少线程可用。
主线程只是一个线程,就像任何其他线程一样。一个线程获得多少CPU时间取决于它自己的优先级、其他线程的数量、它们的优先级以及为每个线程调度的工作量。
由于A11允许所有6个内核同时处于活动状态,因此内核将决定哪个线程获得高性能内核,哪个线程只获得低性能内核。高优先级线程和具有高计算工作负载的线程(那些希望非常频繁地运行并且通常在运行时耗尽其全部运行时间段的线程)是高性能内核的首选。低优先级线程和具有很少计算工作负载的线程(那些希望不频繁运行且经常产生/阻塞的线程,尽管它们的运行时量程尚未用完)是低性能内核的首选。虽然,理论上每个线程都可以在任何内核上运行,因为如果线程正在等待运行,则不使用内核是愚蠢的,但通常首选低功耗内核,因为这会降低功耗并增加电池运行时间。
https://stackoverflow.com/questions/61883248
复制相似问题