我目前有大约 15 个工作线程在 CPU 绑定循环中处理数据。每次确定结果时,都会获得一个 RW 锁,因此可以将结果存储在一个共享的 KV 结构(哈希表)中,键唯一。
由于花费了大量时间来获取锁,因此我正在探索不同的选项来提高性能。我玩过无锁哈希表(concurrent_unordered_map 和英特尔 TBB 无锁结构),但一直想知道让每个线程将其结果记录在单独的哈希表中,并且一旦所有线程完成,执行某种冲突解决。
冲突解决基本上是针对每个 [K1,V1], [K1,V2], .... [K1,Vn] 应该合并成 [K1,F(V1,V2,...Vn)]。
我很好奇哪种数据结构最适合从其他结构迭代相同键的所有值。我确信必须有比单独迭代每个结构更好的东西。创建一个多图,批量添加单独的结构,然后解决冲突等?