只是想知道一个处理器的线程是否对我有好处。我正在构建一个应用程序,该应用程序在 UI 正在运行并且需要平稳运行时执行数据密集型计算(对 pcm 数据进行 fft)。
我一直在看 AsyncTask 但在想:
如果我在我的 Optimus One 上运行一个单核处理器(600 MHz ARM 11 处理器),线程会有所不同吗?我认为线程独立运行需要多个处理器?还是我哪里出错了?
只是想知道一个处理器的线程是否对我有好处。我正在构建一个应用程序,该应用程序在 UI 正在运行并且需要平稳运行时执行数据密集型计算(对 pcm 数据进行 fft)。
我一直在看 AsyncTask 但在想:
如果我在我的 Optimus One 上运行一个单核处理器(600 MHz ARM 11 处理器),线程会有所不同吗?我认为线程独立运行需要多个处理器?还是我哪里出错了?
为了保证响应性,必须让主线程或 UI 线程来做 UI 的事情。这不包括游戏中的密集绘图或 3D 渲染。当你开始在你的主线程中做计算密集型的事情时,用户会看到延迟。一个经典的例子:
单击按钮,睡眠(1000)。将此与单击按钮启动一个休眠(1000)的 AsyncTask 进行比较。
异步任务(和其他线程)允许应用程序“同时”处理计算和 UI 交互。
至于并发是如何工作的,上下文切换是游戏的名称(正如 Dan 所说)。
单核 CPU 上的多线程不会提高您的性能。事实上,与上下文切换相关的开销实际上会降低您的性能。然而,当用户对 UI 感到沮丧并关闭应用程序时,谁在乎你的应用程序运行速度有多快?
Asynctask 肯定是要走的路。
查看开发指南文章Designing for Responsiveness。
Android 使用 Linux 内核和其他专用软件来创建 Android 操作系统。它使用多个进程,每个进程至少有一个线程。单个(和多个)处理器硬件平台上的多线程是通过上下文切换来完成的。这给出了每个处理器一次运行多个线程的错觉。