我每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()来做到这一点。

09-17 04:44