最近被问到怎么用C++11写watchdog,考虑了一会儿,答对了思路,但是没能写出来。于是去翻了下chatgpt,看了几眼后自己尝试写了下,代码如下,权当存档
#include <thread>
#include <atomic>
#include <iostream>
class WatchDog
{
public:
WatchDog(int count, int interval)
: m_count(count), m_interval(interval)
{
}
~WatchDog()
{
if (m_thread.joinable())
{
m_thread.join();
}
}
void start()
{
if (m_run)
{
return;
}
m_run = true;
m_thread = std::thread([this]()
{
int count = 0;
while (m_run)
{
std::this_thread::sleep_for(std::chrono::seconds(m_interval));
if (!m_reset)
{
++count;
if (count > m_count)
{