如何完全释放计时器(timer_list)?

时间:2017-06-22 09:40:54

标签: c linux-kernel embedded linux-device-driver embedded-linux

我正在使用多个计时器的应用程序。当应用程序启动时,一切都只是作为标准运行,除了我有一些指针指向计时器。

我将展示一段示例代码以阐明我的目的:

--------------------------- init foo ------------------ ---

@Scheduled(fixedRate = "0 0 */5 * * *")
@CacheEvict(value = { CACHE_NAME })
public void clearCache() {      
}

------------------ init之后的另一个函数---------------

@EnableScheduling

------------------- DEINIT ---------------------------

 .box:nth-child(1),
 .box:nth-child(2)
 {
 background-color:#fff;
 }

它在开始时工作正常,但是当整个流程(deinit-> init->另一个函数 - > ...)再次运行时,它总是会在add_timer崩溃。

这让我觉得deinit有些不对劲。由于删除计时器仅分离而不是删除。重新运行流程可以将计时器列表网格化。

那么有没有办法安全地释放它?或者如果你发现我犯了其他任何错误?

1 个答案:

答案 0 :(得分:0)

好的,既然没有人回答,我只是发表了一些想法,我终于证明了这是触发事故的真正原因。

似乎如果在长期运行应用程序中有时需要重新启动和删除计时器,则需要释放/清除timer_list。这个del_timer_sync / del_timer并没有像我想象的那样删除它。由于我正在进行的项目很复杂,我想有些家伙只是让事情变得混乱并影响我......如果我有时间,我会试着去挖掘它。