C++ CPP中的计时器同步问题?

C++ CPP中的计时器同步问题?,c++,timer,synchronization,timer-jobs,C++,Timer,Synchronization,Timer Jobs,我有一个计时器类。这个计时器将从我的代码块的不同部分启动。我有另一个类来管理这个计时器,即CTimerManager…这是一个静态类。所以我在这里面临的问题是当我取消初始化我的应用程序时,我所有的计时器需要被销毁…但是由于我在第一个计时器运行时启动了许多计时器关闭内存将变为NULL,如果任何其他计时器处于活动状态,并且它尝试访问内存,则会发生异常(由于CTimerManager的singletn实例)。。。任何人都知道如何面对这个问题只能通过您的CTimerManager类的工厂方法创建计时器实

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

只能通过您的
CTimerManager
类的工厂方法创建计时器实例。这些计时器与您的经理有着内在的联系,并且属于您的经理,因此只有经理才应该对其创建和删除负责


在manager类的析构函数中,应该停止所有计时器并将其删除。这样,一旦管理器被销毁,计时器就不会保持活动状态。

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

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

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


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

我已经读了您的问题3遍,但仍然感到困惑:您在问什么?标题提到了同步,但问题是关于清理。我无法理解“当第一个计时器关闭时,内存将为空,并且如果任何其他计时器处于活动状态,并且它试图访问内存,则会发生异常”。这是第一个计时器在清理过程中关闭的比赛条件,还是因为正在清理而关闭?这个试图访问内存的“it”是什么?哎呀…很抱歉弄得一团糟…这里的逻辑很简单..当第一个计时器被销毁时,我所有其他活动的计时器也应该被销毁..为了实现这一点,我应该调用我创建的每个计时器的StopTimer吗??