gpt4 book ai didi

c++ - boost::lockfree::queue 正在耗尽我的 CPU

转载 作者:行者123 更新时间:2023-11-28 05:23:01 24 4
gpt4 key购买 nike

所以我用boost::lockfree::queue写了一个多线程程序,代码和给定的例子差不多 http://www.boost.org/doc/libs/1_62_0/doc/html/lockfree/examples.html .嗯,我有 4 个队列,数据是结构而不是 int。

问题是我的程序在运行时占用了 95% 的 CPU,而且速度非常慢。经过一些调查,我发现 boost::lockfree::queue::pop 占用了 80% 的 cpu 使用率,这并不奇怪,因为这两个循环

while (!done) {
while (queue.pop(value))
++consumer_count;
}

我可以做些什么来减少 CPU 使用率,还是应该升级我的 CPU?我在 Windows 10 上使用 boost 1.61,visual studio 2015,顺便说一下。

非常感谢

最佳答案

你期待什么?下面这段代码和你的一样(吃CPU方面)

int counter = 0;
bool condition_1 = false;
bool condition_2 = false;
while(!condition_1) {
while(!condition_2) {
++counter;
condition_2 = true;
}
}

恕我直言,当轮询队列时,您需要的是某种通知机制(例如 condition_variable)。否则,不断轮询它,显然会吃掉 cpu。

关于c++ - boost::lockfree::queue 正在耗尽我的 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com