Я использую функцию std::deque at для доступа к элементам без извлечения из очереди, поскольку я использую одну и ту же очередь в разных итерациях. Мое решение основано на крупнозернистой многопоточности. Теперь я хотел сделать это мелкозернистым многопоточным решением. Для этого я использую tbb::concurrent_queue. Но мне нужна эквивалентная функция операции std::deque at в tbb::concurrent_queue?
EDIT Вот как я реализую с помощью 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?