我在函数中使用 std::deque 来访问元素而不从队列中弹出,因为我在不同的迭代中使用相同的队列。我的解决方案是基于粗粒度的多线程。现在我想让它成为细粒度的多线程解决方案。为此,我正在使用 tbb::concurrent_queue。但是我在 tbb::concurrent_queue 中的操作中需要std::deque 的等效功能吗?
编辑 这就是我使用 std::deque 实现的方式(粗粒度多线程)请记住 dq 是静态队列(即在不同的迭代中多次使用)
vertext_found = true;
std::deque<T> dq;
while ( i < dq->size())
{
EnterCriticalSection(&h);
if( i < dq.size() )
{
v = dq.at(i); // accessing element of queue without popping
i++;
vertext_found = true;
}
LeaveCriticalSection(&h);
if (vertext_found && (i < dq.size()) && v != NULL)
{
**operation on 'v'
vertext_found = false;
}
}
我想用 tbb::concurrent_queue 达到同样的结果吗?