并发缓存



我正在寻找一个并发缓存结构。我正在使用微软的PPL,所以我有concurrent_unordered_map类,但它似乎不是我所需要的。我有一个哈希值,我需要将它与一个指针类型相关联,或者如果它已经在缓存中,就返回那个指针。我不使用LRU或MRU缓存策略,值永远不会被删除,所以它更像是并发记忆。

直接锁定现有的std::unordered_map会更简单吗?

我不知道微软的PPL。我只是看了英特尔线程构建块头文件为英特尔的concurrent_unordered_map和它的insert函数返回false作为返回对的第二部分时,键已经在映射。

这似乎正是你所需要的。执行插入,如果它返回true,那么它是一个新的插入。如果它返回false,那么它已经在映射中了。

编辑:这里似乎有些混乱。我并不是说你应该总是运行插入。我的意思是,您应该寻找值,如果它丢失,然后尝试插入。两个或多个线程可能偶尔会在插入上竞争,因此工作将被重复,但这应该是罕见的事件。

最新更新