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

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

我知道底层的OS内核(Android linux内核)决定调度。 我的问题是我是否需要做任何额外的事情以启用多核使用,或者它是否自动且透明?

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

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

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

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.