如代码所示,线程增加的次数增加,线程减少的次数增加,最优为1。
Cursor c = getContentResolver().query(uri, null, null, null, null)
如代码所示,线程增加的次数增加,线程减少的次数增加,最优为1。
答案 0 :(得分:1)
创建注释中指出的线程存在开销问题。
此外,当多个CPU尝试修改每个CPU的高速缓存行上表示的内存时,该高速缓存行的第一次修改会导致其他CPU中的高速缓存行被标记为无效。这在SMP系统中产生了真正的性能问题。这个问题被称为虚假分享。
当您修改多个CPU在地址空间中靠近的内存区域时,您很容易出现错误共享。有关情况的精彩报道,see Dr. Dobbs。
您的代码似乎可能会遭受虚假共享,因为您符合一般标准。您正在修改数据,数据在内存中靠得很近,而您在多个线程上执行此操作。如果你还有一个以上的CPU核心,那么几乎可以肯定至少有一定程度的虚假共享。