Uso de concurrent_queue

Uso de concurrent_queue

por Ricardo Cillo -
Número de respostas: 1
Olá,

Estou com problemas para usar a classe concurrent_queue do tbb.

Eu sei que da pra usar outras estruturas, mas quero conseguir fazer rodar com a fila usando push e pop bloqueante.

No meu código eu faço:

concurrent_queue<int> Q;

int id = 42;
Q.push(id);

int dummy;
Q.pop(&dummy);

Aí qnd compilo ele diz:

call_center.cpp:23: erro: no matching function for call to ‘tbb::concurrent_queue<int, tbb::cache_aligned_allocator<int> >::pop(int*)’
/home/ricardo/mac0438/intel/include/tbb/concurrent_queue.h:310: nota: os candidatos são: void tbb::concurrent_queue<T, A>::pop(T&) [with T = int, A = tbb::cache_aligned_allocator\
<int>]

Eu fiz #include "tbb/concurrent_queue.h" e using namespace tbb;

Pesquisei na internet e no google codesearch e não achei nada além do exemplo do próprio tbb e umas apresentações copy-and-paste.
Em resposta à Ricardo Cillo

Re: Uso de concurrent_queue

por Eduardo Teruo Katayama -
o certo é Q.pop(dummy)

Um pequeno exemplo:

int main()
{
tbb::concurrent_queue<int> queue;
for (int i = 0; i < 10; i++) {
queue.push(i);
printf("colocando: %d\n", i);
}

int item = -1;
for (int i = 0; i < 10; i++) {
queue.pop(item);
printf("tirando: %d\n", item);
}
return 0;
}

Abraços,
Eduardo