2

只是想知道一个处理器的线程是否对我有好处。我正在构建一个应用程序,该应用程序在 UI 正在运行并且需要平稳运行时执行数据密集型计算(对 pcm 数据进行 fft)。

我一直在看 AsyncTask 但在想:

如果我在我的 Optimus One 上运行一个单核处理器(600 MHz ARM 11 处理器),线程会有所不同吗?我认为线程独立运行需要多个处理器?还是我哪里出错了?

4

2 回答 2

6

为了保证响应性,必须让主线程或 UI 线程来做 UI 的事情。这不包括游戏中的密集绘图或 3D 渲染。当你开始在你的主线程中做计算密集型的事情时,用户会看到延迟。一个经典的例子:

单击按钮,睡眠(1000)。将此与单击按钮启动一个休眠(1000)的 AsyncTask 进行比较。

异步任务(和其他线程)允许应用程序“同时”处理计算和 UI 交互。

至于并发是如何工作的,上下文切换是游戏的名称(正如 Dan 所说)。

单核 CPU 上的多线程不会提高您的性能。事实上,与上下文切换相关的开销实际上会降低您的性能。然而,当用户对 UI 感到沮丧并关闭应用程序时,谁在乎你的应用程序运行速度有多快?

Asynctask 肯定是要走的路。

于 2011-10-04T03:23:52.997 回答
2

查看开发指南文章Designing for Responsiveness

Android 使用 Linux 内核和其他专用软件来创建 Android 操作系统。它使用多个进程,每个进程至少有一个线程。单个(和多个)处理器硬件平台上的多线程是通过上下文切换来完成的。这给出了每个处理器一次运行多个线程的错觉。

于 2011-10-03T22:09:54.387 回答