CPP中的定时器同步问题?

时间:2012-06-19 14:46:38

标签: c++ timer synchronization timer-jobs

我有一个计时器类..这个计时器将从我的代码块的各个部分启动..我有另一个类来管理这个计时器,即CTimerManager ...这是一个静态类..所以我在这里遇到的问题当我取消初始化我的应用程序时,我的所有计时器需求都被销毁了...但是因为我在第一个计时器关闭时启动了许多计时器,内存变为NULL并且如果任何其他计时器处于活动状态并且它尝试访问内存异常发生(由于CTimerManager的单例实例)......任何人都知道如何面对这个问题

2 个答案:

答案 0 :(得分:0)

仅通过CTimerManager类的工厂方法创建计时器实例。这些计时器本质上与您的经理绑定,属于它,因此只有经理才应对其创建和删除负责。

在你的经理类'析构函数中,你应该暂停所有的定时器并删除它们。这样,一旦管理器被销毁,没有计时器将保持活动或活动状态。

答案 1 :(得分:0)

根据您的描述,您正在创建一个类,该类包含在给定时间后回调自己的计时器。当您销毁管理器时,定时器数据结构消失,然后定时器回调对象被销毁。

在调用CTimerManager的析构函数时,必须确保关闭所有计时器。

您是否正在使用线程然后调用睡眠?在这种情况下,每个定时器需要定期检查一个标志,以查看定时器是否提前终止。然后在析构函数中设置一个标志以提前终止计时器并加入()所有计时器线程。

如果您正在调用某些操作系统计时器回调,它可能具有取消计时器的功能。