假设我的应用程序运行 2 个线程(例如一个渲染线程和一个游戏更新线程)。如果它在具有多核 CPU(现在很典型)的移动设备上运行,我可以期望线程在可能的情况下自动分配给不同的内核吗?
我知道底层操作系统内核(Android linux 内核)决定调度。我的问题是我是否需要做任何额外的事情来启用多核使用,或者它是自动和透明的?
假设我的应用程序运行 2 个线程(例如一个渲染线程和一个游戏更新线程)。如果它在具有多核 CPU(现在很典型)的移动设备上运行,我可以期望线程在可能的情况下自动分配给不同的内核吗?
我知道底层操作系统内核(Android linux 内核)决定调度。我的问题是我是否需要做任何额外的事情来启用多核使用,或者它是自动和透明的?
您需要做的是让两个线程尽可能独立运行。如果您有两个始终相互等待的线程,它们可能会在同一个内核上运行以节省电力。(因为它可能看起来没有通过使用核心获得什么)
情况如下:第一个线程解码一个位图,而渲染器将前一个位图的纹理上传到 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.