单线程应用程序在android中使用多核?

时间:2013-05-15 10:17:29

标签: android multithreading multiprocessing

单线程应用程序是否使用四核手机中的所有4核心。 我搜索了很多,发现一些文章说是,有些说不。有些文章甚至说Android操作系统没有使用4核心。

Android是否能够在四核处理器中使用所有4个内核?

单线程应用程序是否使用多核心?

3 个答案:

答案 0 :(得分:20)

答案是

Android基本上是建立在Linux内核之上的,确实利用了mulit-core。 就单线程应用程序而言,请记住,线程不能同时在不同内核上的部分执行。因此,虽然您的单线程可以在不同的时间点由不同的核心执行,但它不能被细分同时由不同的核心执行。

话虽如此,请注意像Qualcomm这样的芯片组制造商正在开发智能处理器,能够将您的单线程应用程序代码(当且仅当存在相互排斥的部分)细分为多个线程并使其运行在不同的线程上核心。同样,基本原理保持不变 - 为了利用多核,单线程被细分为多个线程。

为了充分利用您的多核芯片,您宁愿创建一个具有最大可能异步线程的多线程应用程序,以便最佳地利用最大内核数。希望这清楚。

修改

这也转换为 - 不使用多个异步线程(或任何其他并行构造)的应用程序不会使用多个核心。

答案 1 :(得分:10)

在基于四核CPU的移动设备上,操作系统可以动态分配 基于当前CPU负载和任务/活动优先级的适当CPU核心的工作负载。 例如,如果两个CPU核心正忙于处理Android应用程序等长任务 更新,文件压缩和媒体处理操作系统可以立即分配延迟 敏感任务,如触摸输入到可用的第三或第四核心,以提供更快 响应。当有多个任务同时运行时,排队请求 当有多个核可用于服务这些请求时,可以更快地为这些任务提供服务。

Android操作系统是从Linux发展而来的,因此具有原生支持 多任务处理和多线程。最近发布的Android 2.3和Android 3.0 / 3.1 / 3.2增加了一些功能,可以提高操作系统利用多核CPU处理能力的能力。 Firefox和Webkit等移动浏览器基于其桌面版本,因此本身包含对多线程的支持。 Android 3.0附带的新浏览器不仅支持多线程,还支持选项卡式浏览。这些浏览器能够利用多核CPU提供的增强处理能力,提供更快,更好的Web浏览体验。

以下图片会详细说明:

该图显示了浏览流行的纽约时报网站时四核CPU系统的每个核心的利用率。从图中可以看出,浏览器使用四核CPU的所有四个核心,并且这种并行处理产生的Web浏览体验比基于双核CPU的移动设备上的6快得多。四核CPU还为支持标签式浏览的浏览器提供更高的性能。

CPU Utilization

下图显示了在Web浏览器中打开多个选项卡时四个CPU核心的CPU利用率。事实上,选项卡式浏览使用了大量的CPU处理,如图所示,甚至可能会使四核CPU的所有四个内核饱和。

Tabbed Browsing

Android操作系统应该利用所有核心的原因:(因为我是Android开发人员所以理由与Android开发人员的观点有关)

由于移动游戏的快速增长,开发人员正在移植流行的PC和游戏机游戏 引擎移动环境。这些游戏引擎最初是为多核桌面PC平台开发的,因此将利用移动中的多核CPU 处理器为移动游戏玩家带来直接利益。四核CPU提供 为游戏开发者提供强大的处理能力,并使开发人员能够加入 高级物理效果,人工智能,碰撞检测/避免,虚拟纹理,更好的网络可玩性等。四核CPU和可变SMP技术将使移动设备进一步提升性能范围,并允许应用程序和游戏开发人员提供新的移动体验,同时延长最常用用例的电池寿命。

随着手机游戏的复杂性和视觉丰富度的增加,可下载游戏内容的相应文件大小也大大增加。通常,游戏文件大小太大,以至于下载游戏所花费的时间超过购买后用户要求退款的十五分钟退款时间,如果他们不喜欢游戏的话。这不仅会让玩家感到沮丧,而且还会使购买者无法购买需要大量文件下载的高级游戏。

实时动态纹理生成技术允许游戏开发者对游戏进行编码,从而根据游戏的叙述和状态实时创建游戏中所需的纹理。由于纹理是在运行中生成的,因此不必在购买时提供它们。使用这种技术,游戏开发人员可以将游戏文件大小减少几个数量级。在4核CPU的游戏中看看下面的场景变化。

Game Scene Variation

答案 2 :(得分:7)

是。 Android 3.0是该平台的第一个版本,旨在在单核或多核处理器架构上运行。

即使是单线程应用程序也可以从不同内核的并行处理中受益

例如,如果您的应用程序使用媒体服务器,则媒体处理和UI呈现应用程序逻辑可以同时在不同的核心上运行。此外,垃圾收集器可以在不同的核心上运行

查看下面的链接了解更多详情

https://developer.qualcomm.com/blog/multi-threading-android-apps-multi-core-processors-part-1-2

https://developer.qualcomm.com/blog/multi-threading-android-apps-multi-core-processors-part-2-2

说出你使用的图形。要渲染相同的应用程序,您可以使用多核。您可以在下面的链接中查看相同内容。

https://youtu.be/vQZFaec9NpA?t=459(图形和性能)

http://android-developers.blogspot.in/2010/07/multithreading-for-performance.html

检查此pdf。向下滚动到幻灯片22.可能很有用

http://elinux.org/images/1/11/Application-Parallelization-Android-KlaasVanGend.pdf