Мне требуется сигнал сердцебиения каждые 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();
}
}
. Это вызывает сердцебиение без каких-либо проблем.Однако я хотел бы иметь возможность сбросить таймер сна обратно на ноль.Есть ли простой способ сделать это, или я должен использовать что-то другое, чем
boost::this_thread::sleep
для сна?
ОС: Redhat
IDE: Eclipse
Язык кода: C ++
РЕДАКТИРОВАТЬ:
Я смотрел на использование
m_pHBThread->interrupt();
И, похоже, япосле, так что спасибо!