2011-10-03 78 views
2

想知道使用一個處理器進行線程處理是否可以爲我提供幫助。 我正在構建一個應用程序,該應用程序在用戶界面運行時需要平穩運行時執行數據密集型計算(對pcm數據爲fft)。使用單核的Android線程處理

我一直在尋找的AsyncTask,但在想:

如果我有一個單核處理器(600 MHz的ARM處理器,11)在我的Optimus One運行,將穿線有所作爲?我認爲線程獨立運行需要多個處理器?或者我在某個地方出了問題?

回答

6

爲了保證響應速度,必須讓主線程或UI線程執行UI事務。這不包括遊戲中的強化繪圖或3d渲染。當你開始在你的主線程中做計算密集型的事情時,用戶會看到滯後。一個經典的例子:

在一個按鈕上單擊,睡眠(1000)。比較一下,點擊按鈕後,啓動睡眠的AsyncTask(1000)。

一個asynctask(和其他線程)允許應用程序「simulataneously」處理計算和UI交互。就併發性而言,上下文切換是遊戲的名稱(如Dan的帖子)。

單核CPU上的多線程不會提高性能。實際上,與上下文切換相關的開銷實際上會降低您的性能。但是,誰關心你的應用程序工作的速度有多快,當用戶對用戶界面感到沮喪並關閉應用程序?

Asynctask肯定是要走的路。

+0

謝謝你的幫助伊恩。我相信那是我要做的 –

+0

這是一個很好的解釋! –

2

查看開發指南文章Designing for Responsiveness

Android使用Linux內核和其他專業軟件來創建Android操作系統。它使用多個進程,每個進程至少有一個線程。單個(和多個)處理器硬件平臺上的多線程由context switching完成。這給出了每次處理器運行多個線程的錯覺。

+0

非常感謝,是一個有趣的閱讀。 –