【发布时间】:2020-01-22 21:18:15
【问题描述】:
你不能有一个原始类型的并发队列吗?我在 C++ 中使用 ppl.h 中的 concurrent_queue 对象,并且正在初始化我的队列:
iQueue = new concurrency::concurrent_queue<int>;
我注意到如果我将一个 int 推送到队列中:
iQueue->push(num);
然后尝试从另一个线程中弹出它,我只能从队列中获取一个值 - 就是这样。无论我推多少次,它都只是一个单一的值。并发队列是否不适用于 int 等原始类型?
还有其他方法可以做到这一点吗?谢谢
我为此使用了 Windows MFC 框架,因此可能更难以重现。基本上,在我的主线程中,我有:
concurrency::concurrent_queue<int>* iQueue = new concurrency::concurrent_queue<int>;
然后,对于发生的每个事件(在 MFC 中)都会调用以下代码:
iQueue->push(num);
然后,在一个工作线程中我有:
while (1) {
int temp;
if (queue->try_pop(temp)) {
// do something
}
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c++ multithreading mfc queue