gpt4 book ai didi

c++ - 等待条件变量加载 CPU 内核吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:09 26 4
gpt4 key购买 nike

等待条件变量是否会导致循环使用指令将 CPU 内核加载到 100%?这就是在 C++ 中等待 cvar 的通常方式:

void worker_thread()
{
// Wait until ready turns true and the condition variable is notified
std::unique_lock<std::mutex> lk(m);
cv.wait(lk, []{return ready;}); //<-- does this load the cpu?
// Do something
}

我假设底层实现是这样的:

while (1)
{
lock mutex;
if (condition) signal();
unlock mutex;
}

由于没有 Sleep(),此代码会将运行它的处理器内核加载到 100%。

现实中会发生什么?

最佳答案

在我的例子中(这就是我发现你的问题的方式)问题在于没有为编译器和链接器指定 -pthread。是的,在没有该标志的情况下,所有内容都可以编译和链接,但 CPU 使用率为 100%。

关于c++ - 等待条件变量加载 CPU 内核吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900071/

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