Firefly开源社区

【GoRK3288】7.WatchDog操作方法

230

积分

23

威望

20

贡献

技术达人

Rank: 2

积分
230

突出贡献

发表于 2015-5-15 09:19:40     
    请先在https://github.com/tjCFeng/GoRK3288下载 GoRK3288 开源库


    WatchDog在做服务器程序时很有用处,服务器在运行过程中,一旦发生死机、程序异常等情况,造成系统运行紊乱,可以通过WatchDog来自动控制整个系统重新启动,可以最大限度地减少人员维护的工作量。

    WatchDog也叫看门狗,它其实就是一个定时器,每隔一段时间检测一个标志位是否被程序赋值,即所谓的喂狗。 如果在某次检测中发现这个标志位没有被人为干预,那么意味着应用程序或系统不能正常运行了,那么它会强制系统重新启动。把应用程序制作成为自启或服务程序时,系统在重新启动后将自动运行这些程序,很大程度上可以恢复正常的工作。

    经过前面几节的介绍,Go语言常用的语法已经都展示出来了,没有什么其他太多的花样了,所以这一节的内容将会更加简单。WatchDog的示例程序如下:

psb (1).png


    因为系统中只有一个WatchDog,所以照样是个单例。这段代码为了有别于上一节,特意加了一个判断是否调用成功的语句,一般使用中可以不需要判断,直接使用。

    在调用了获得单例的函数后可以得到WatchDog的实例,首先需要先给它一个喂狗的间隔时间,通过FeedSecond来设置。默认的是3秒喂一次狗,当然这个时间可以改变,如示例中改为了10秒。不过这个时间间隔一定不要超过WatchDog的检测时间,否则直接重启了,起不到作用。
    Start后WatchDog开始工作,Start同样是个协程,可以在工作后执行其他的代码而不阻塞在这里。示例中没有其他的代码,所以用了个Sleep等待一分钟,来演示效果。

    这里需要注意一下的是Stop。这里有点奇怪,当我Start后,无论怎样的Stop,这个WatchDog始终不能停止工作,检查寄存器会发现
控制启停的那一位不会变化,设置不成功。这个问题同样需要请教Firefly的高手,是不是我哪里操作有不对的地方。

好了,就是这些了,最后还是
总结一下WDT类的方法:
    IWDT:获得WatchDog的实例
    FreeWDT:释放WatchDog
    FeedSecond:设置喂狗的间隔时间(不设置的话默认是3秒)
    Start:启动WatchDog
    Stop:停止WatchDog(暂时不起作用)

    GoRK3288库请在https://github.com/tjCFeng/GoRK3288下载。


回复

使用道具 举报

21

积分

0

威望

0

贡献

技术小白

积分
21
发表于 2015-7-10 14:44:01     
楼主在开源库中下载的WatchDog程序编译后,会提示没有定义IRK3288,怎么用go语言定义呢?
回复

使用道具 举报

230

积分

23

威望

20

贡献

技术达人

Rank: 2

积分
230

突出贡献

发表于 2015-7-10 16:47:55     
Lexi 发表于 2015-7-10 14:44
楼主在开源库中下载的WatchDog程序编译后,会提示没有定义IRK3288,怎么用go语言定义呢?

QQ截图20150710164620.png

在这个文件里了。
回复

使用道具 举报

21

积分

0

威望

0

贡献

技术小白

积分
21
发表于 2015-7-11 00:46:06     
tjCFeng 发表于 2015-7-10 16:47
在这个文件里了。

好的,谢谢您了
回复

使用道具 举报

230

积分

23

威望

20

贡献

技术达人

Rank: 2

积分
230

突出贡献

发表于 2015-7-12 12:20:21     
Lexi 发表于 2015-7-11 00:46
好的,谢谢您了

不客气,互相交流。
回复

使用道具 举报

61

积分

0

威望

0

贡献

技术小白

积分
61
发表于 2018-4-23 01:54:45     
Stop 的问题解决了没呀
回复

使用道具 举报

61

积分

0

威望

0

贡献

技术小白

积分
61
发表于 2018-4-23 01:55:23     
Stop 的问题解决了没呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表