Разве вы не можете иметь параллельную очередь примитивных типов? Я использую объект concurrent_queue из ppl.h в C ++ и инициализирую свою очередь следующим образом:
iQueue = new concurrency::concurrent_queue<int>;
Я замечаю, что если я добавлю sh int в очередь как таковую:
iQueue->push(num);
А затем попробуйте извлечь его из другого потока, я могу получить только одно значение из очереди - вот и все. Независимо от того, сколько раз я наберу sh, это просто одно значение, которое выходит. Разве параллельные очереди не работают с примитивными типами, такими как int?
Есть ли другой способ сделать это? Спасибо
Я использую для этого фреймворк Windows MF C, поэтому его будет сложнее воспроизвести. В основном, в моем основном потоке у меня есть:
concurrency::concurrent_queue<int>* iQueue = new concurrency::concurrent_queue<int>;
И затем, ниже, который вызывается для каждого события, которое происходит (в MF C):
iQueue->push(num);
Тогда , в рабочем потоке у меня есть:
while (1) {
int temp;
if (queue->try_pop(temp)) {
// do something
}
}