我必须search一个进程表,这个进程表是由在一组给定的ip地址上运行的进程的名字填充的。 目前我在C ++中使用multimaps进程名称作为键和IP地址作为值。 还有没有其他有效的数据结构可以完成同样的任务。 也可以通过使用pthreads获得任何types的并行性? 如果有的话,谁能指出我正确的方向
您不需要并行访问数千条RAM的数据结构。 你可以锁定它(确保当时只有一个进程/线程访问它),并确保访问足够了。 Multimap是好的。 哈希映射会更好,但。
什么是你的表的典型查询?
尝试使用散列表,它可以更快的大表。
你如何存储名称和IP? UTF,字符串,字符*? 叶作为uint32或字符串?
对于具有大量读取查询的只读结构,您可以从多个线程中受益。
upd:使用#include <tr1/unordered_map>
std::unordered_multimap
根据表的大小,你可能会发现一个比multimap
容器(用平衡二叉树实现)更有效的散列表。
hash_multimap数据结构实现了一个散列表STL容器,可能对你很有用。