我每10秒左右需要一次心跳信号。为了实现这一点,我制作了一个带有以下构造函数的类:
HeartBeat::HeartBeat (int Seconds, MessageQueue * MsgQueue)
{
TimerSeconds = Seconds;
pQueue = MsgQueue;
isRunning = true;
assert(!m_pHBThread);
m_pHBThread = shared_ptr<thread>(new thread(boost::bind(&HeartBeat::TimerStart,this)));
}
在新线程中调用以下方法:void HeartBeat::TimerStart ()
{
while (1)
{
cout << "heartbeat..." << endl;
boost::this_thread::sleep(boost::posix_time::seconds (TimerSeconds));
addHeartBeat();
}
}
这会产生无任何问题的心跳。但是,我希望能够将 sleep 计时器重置为零。有没有一种简单的方法可以执行此操作,还是我应该使用其他方法而不是 boost::this_thread::sleep
为了我的 sleep ?操作系统:Redhat
IDE:Eclipse
代码语言:C++
编辑:
我看过使用
m_pHBThread->interrupt();
这似乎是我所追求的,所以谢谢! 最佳答案
也许您可以使用interrupt()来做到这一点。