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.
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
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