等待条件变量会导致循环以指令的形式将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;
}
这段代码会使当前处理器核心的负载达到100%,因为没有使用Sleep()函数进行休眠。
实际情况会怎样呢?