我必须搜索一个进程表,该进程表由在给定ip地址集上运行的进程的名称填充。 目前我在C ++中使用multimaps,进程名称为密钥,ip地址为值。 是否有任何其他有效的数据结构可以完成相同的任务。 我也可以通过使用pthreads获得任何类型的并行性吗?如果是这样,任何人都可以指出我正确的方向
答案 0 :(得分:1)
您不需要并行来访问数千个条目的RAM中的数据结构。您可以锁定它(确保当时只有一个进程/线程访问它),并确保访问足够。 Multimap没问题。虽然哈希图会更好。
答案 1 :(得分:1)
您桌子的典型查询是什么?
尝试使用hashmap,对于大表来说可能更快。
如何存储名称和IP? UTF,string,char *?是作为uint32还是字符串?
对于具有大量读取查询的只读结构,您可以从多个线程中受益。
upd:使用std::unordered_multimap
#include <tr1/unordered_map>
答案 2 :(得分:0)
根据表的大小,您可能会发现哈希表比multimap
容器(使用平衡二叉树实现)更有效。
hash_multimap数据结构实现了哈希表STL容器,可能对您有用。