C++ 升压截止时间\u定时器移位10毫秒
有人遇到过截止期计时器在10毫秒后不断调用下一个回调函数吗?这是预期的吗 操作系统是centos 6,boost版本是1.54 e、 g 代码如下所示C++ 升压截止时间\u定时器移位10毫秒,c++,boost,C++,Boost,有人遇到过截止期计时器在10毫秒后不断调用下一个回调函数吗?这是预期的吗 操作系统是centos 6,boost版本是1.54 e、 g 代码如下所示 // std::unique_ptr<boost::asio::deadline_timer> m_poTimer; void timerExpired(const boost::system::error_code& oError) { if (!oError) {
// std::unique_ptr<boost::asio::deadline_timer> m_poTimer;
void timerExpired(const boost::system::error_code& oError)
{
if (!oError)
{
m_poTimer->expires_from_now(boost::posix_time::millisec(1000));
m_poTimer->async_wait(std::bind(&timerExpired, this, std::placeholders::_1));
}
else
{
}
}
//std::unique_ptr m_poTimer;
void timerExpired(const boost::system::error\u code&oError)
{
如果(!oError)
{
m_poTimer->expires_from_now(boost::posix_time::毫秒(1000));
m_poTimer->async_wait(std::bind(&timerExpired,this,std::placeholders::_1));
}
其他的
{
}
}
与通用分时操作系统上的任何应用层计时器一样,根本不可能保证在精确时间后执行。您的操作系统不断在进程和线程之间切换上下文,如果没有唤醒CPU并首先检查计时器,您的代码无法中断CPU以立即执行
所有的应用层计时器都是为“至少是”t”而设置的,对此您无能为力
我承认,令人惊讶的是,您拥有如此可靠且可重复的模式,但是:
- 这是您环境的一个因素(我们无法与之交谈),或者
- 这是图书馆的一个因素(我看不到证据),或者
- 这是您代码的一个因素(我们无法确定,因为您没有提供),或者
- 这只是由上述事实造成的异常现象,你对此无能为力
// std::unique_ptr<boost::asio::deadline_timer> m_poTimer;
void timerExpired(const boost::system::error_code& oError)
{
if (!oError)
{
m_poTimer->expires_from_now(boost::posix_time::millisec(1000));
m_poTimer->async_wait(std::bind(&timerExpired, this, std::placeholders::_1));
}
else
{
}
}