线程自动使用多个CPU内核?

时间:2013-06-23 10:00:11

标签: java android multithreading

假设我的应用程序运行2个线程(例如渲染线程和游戏更新线程)。如果它在具有多核CPU的移动设备上运行(现在是典型的),我是否可以期望在可能的情况下自动将线程分配给不同的内核?

我知道底层操作系统内核(Android linux内核)决定调度。我的问题是我是否需要任何其他来启用多核使用,还是自动且透明?

1 个答案:

答案 0 :(得分:3)

您需要做的是允许两个线程尽可能独立运行。如果您有两个始终在彼此等待的线程,它们可能在同一个核心上运行以节省电量。 (因为可能看起来没有任何东西可以通过使用核心来获得)

  

案例如下:第一个线程解码位图,而渲染器将前一个位图的纹理上传到GPU。如果无事可做,第一个线程会进入休眠状态;如果需要再次解码位图,则唤醒。

我怀疑这是一个很好的例子,两个线程无法帮助,因为解码位图应该比“上传”更快这意味着你有两种情况

T1: decoding bit map, 
T2: waiting for a bit map.

T1: sleeping
T2: uploading a bit map.

T1: sleeping
T2: waiting for a bitmap.

你能看到两个线程都不需要运行(或者很少)的情况吗?这可能不会比这更快,甚至更慢

T1: decodes bitmap.
    uploads bitmap.
    waiting for a bitmap.