想知道使用一个处理器进行线程处理是否可以为我提供帮助。 我正在构建一个应用程序,该应用程序在用户界面运行时需要平稳运行时执行数据密集型计算(对pcm数据为fft)。使用单核的Android线程处理
我一直在寻找的AsyncTask,但在想:
如果我有一个单核处理器(600 MHz的ARM处理器,11)在我的Optimus One运行,将穿线有所作为?我认为线程独立运行需要多个处理器?或者我在某个地方出了问题?
想知道使用一个处理器进行线程处理是否可以为我提供帮助。 我正在构建一个应用程序,该应用程序在用户界面运行时需要平稳运行时执行数据密集型计算(对pcm数据为fft)。使用单核的Android线程处理
我一直在寻找的AsyncTask,但在想:
如果我有一个单核处理器(600 MHz的ARM处理器,11)在我的Optimus One运行,将穿线有所作为?我认为线程独立运行需要多个处理器?或者我在某个地方出了问题?
为了保证响应速度,必须让主线程或UI线程执行UI事务。这不包括游戏中的强化绘图或3d渲染。当你开始在你的主线程中做计算密集型的事情时,用户会看到滞后。一个经典的例子:
在一个按钮上单击,睡眠(1000)。比较一下,点击按钮后,启动睡眠的AsyncTask(1000)。
一个asynctask(和其他线程)允许应用程序“simulataneously”处理计算和UI交互。就并发性而言,上下文切换是游戏的名称(如Dan的帖子)。
单核CPU上的多线程不会提高性能。实际上,与上下文切换相关的开销实际上会降低您的性能。但是,谁关心你的应用程序工作的速度有多快,当用户对用户界面感到沮丧并关闭应用程序?
Asynctask肯定是要走的路。
查看开发指南文章Designing for Responsiveness。
Android使用Linux内核和其他专业软件来创建Android操作系统。它使用多个进程,每个进程至少有一个线程。单个(和多个)处理器硬件平台上的多线程由context switching完成。这给出了每次处理器运行多个线程的错觉。
非常感谢,是一个有趣的阅读。 –
谢谢你的帮助伊恩。我相信那是我要做的 –
这是一个很好的解释! –