У меня есть модуль, который управляет таймерами в моем приложении.Этот класс имеет три основных функции:
Экземпляр ACE_Reactor используется внутренне модулем для управления таймерами.
- timer timer - вызывает ACE_Reactor :: schedule_timer ().Одним из аргументов является обратный вызов, который вызывается при срабатывании таймера.
- отменять таймер - вызывает ACE_Reactor :: cancel_timer ()
Реактор, выполняемый в частном таймере выполнения, поэтому планируйте /Отмена и обратный вызов тайм-аута выполняются в разных потоках.
ACE_Reactor :: schedule_timer () получает структуру allocatec кучи ( arg аргумент).
Эта структура впоследствии удаляется при отмене таймера или по истечении времени ожиданияобработчик называется.Но поскольку обработчик отмены и тайм-аута выполняется в разных потоках, похоже, что есть случаи, когда структура удаляется дважды.
Разве не реактор отвечает за то, чтобы таймер был отменен при вызове обработчика тайм-аута?