gpt4 book ai didi

c++ - boost scoped_lock 占用过多 CPU

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

我有一些代码等待对共享内存的写操作。如果没有人写,它会继续等待。

    Test* Foo::Get() 
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex> lock ( mutex ) ; // mutex is boost::interprocess::interprocess_mutex
if ( this->check == 0 )
this->interprocessCondition.wait ( lock ) ; // interprocessCondition is boost::interprocess::interprocess_condition

...
}

当我进行采样时,我发现它消耗了大约 90% 的 CPU。

有人可以帮我解决这个性能问题吗?请参阅所附图片。

Screen Shot

最佳答案

不幸的是,

boost::interprocess 在许多平台(显然包括 OSX)上使用忙等待锁定。您需要使用您的平台本身的锁,它实际上是在休眠的。

关于c++ - boost scoped_lock 占用过多 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901725/

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