【问题标题】:How can i create watchdog timer using c++ and boost我如何使用 C++ 和 boost 创建看门狗定时器
【发布时间】:2011-07-29 15:40:31
【问题描述】:

创建 WatchDogTimer 类的最佳和最短方法是什么,它可以等待一段时间然后死掉?

所以当我在做类似的事情时

WatchDogTimer wdt (10);

wdt 将仅在接下来的 10 秒内可用。

我该怎么做?

ps:是的,我看到了that 线程,但实际上并没有帮助。

【问题讨论】:

  • 你不能。当您以这种方式分配某些东西时,您就是在堆栈上分配它。唯一能将其从堆栈中移除的是退出包含该变量的范围(即从方法返回)。换句话说,就时间而言,没有什么是你可以控制的。您可以使用线程或信号来执行此操作,但对象本身需要在堆上分配(即使用 new 运算符)。请举例说明您为什么要这样做,这可能有助于我们给出更明智的答案。

标签: c++ boost


【解决方案1】:

使用new 在堆上创建一个对象并将其交给shared_ptr。然后仅在退出前休眠 10 秒的线程中保留该共享指针。确保线程是shared_ptr 的唯一实例,所有其他引用都是weak_ptrs。 10 秒后weak_ptr::get() 将返回 null。

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2019-03-18
    • 1970-01-01
    相关资源
    最近更新 更多