3

我想知道是否有人可以建议一个 c++ 数据结构,它具有环形缓冲区(保证有限存储)的能力,但同时允许对环形缓冲区进行有效的线程安全搜索以查找指定数据?

4

1 回答 1

2

英特尔TBB 容器非常适合解决此类问题。

应该为你的concurrent_unordered_map情况做事,但如果你真的想要一些环结构,你可以使用concurrent_bounded_queue并自己推动来模拟环的行为(见下文)。但是,使用这种结构,您将获得线性搜索复杂性,而不是地图中的对数复杂性。

template<class T>
struct concurrent_ring : tbb::concurrent_bounded_queue<T>
{
    void push(const T& t) 
    {
        while(!tbb::concurrent_bounded_queue<T>::try_push(t)) 
           pop();
    }
}
于 2013-06-25T08:55:47.130 回答