1

有哪些方法可以在 Android 上进行多核编程,是 Async-Tasks 和他们自己使用多核的线程还是我们需要调用一些 API 来强制执行?

4

3 回答 3

9

您不需要使用任何 API。操作系统和 Dalvik 虚拟机调度线程在可用内核上的执行。

于 2013-08-11T13:15:15.243 回答
1

我喜欢 qualcomm 开发网站上的这篇博文,因为 qualcomm 深入研究了 Android 的硬件核心方面:https ://developer.qualcomm.com/blog/multi-threading-android-apps-multi-core-processors -part-1-2https://developer.qualcomm.com/blog/multi-threading-android-apps-multi-core-processors-part-2-2

TL;DR - 不需要 API,只需使用不同的 Android 构造(如 AsyncTasks、Java 线程和 IntentService)进行干净的并行化,其余的将由 Dalvik-Linux 内核完成。它的一些好的部分在这里相关:

我的单线程应用程序可以从多核中受益吗?如何?

即使是单线程应用程序也可以从不同内核上的并行处理中受益。例如,如果您的应用程序使用媒体服务器,则媒体处理和 UI 渲染应用程序逻辑可以同时在不同的内核上运行。此外,垃圾收集器可以在不同的核心上运行。

如何编写利用多核的代码?

要在多核设备上实现可用处理能力的最大潜力,请在编写应用程序时考虑并发性。应设计应用程序,以便将可以并行执行的任务设置为在单独的线程上运行。

还有这里的答案:单线程应用程序在android中使用多核吗?尤其是分析单线程应用程序如何利用多核的性能。

我也喜欢AT&T 对 Dalvik 本身的多核编码细节的介绍。他们使用 Mandelbrot 集图像来解释哪个很酷,反向链接到 Android 开发站点进行多线程处理。

于 2013-08-11T13:59:04.210 回答
-1

使用多线程来使用多核,因为 android 操作系统和 Dalvik 虚拟机 (DVM) 管理多任务并在需要时使用多核,因此您不必使用任何 Api。要了解有关他们的更多信息,请下载此 pdf

于 2013-08-11T13:10:35.253 回答