История изменений
Исправление KivApple, (текущая версия) :
Ну я и так считаю, что с VirtualTimer в один момент времени должен работать только один поток. Это в принципе логично. Но вот убедиться, что callback точно не будет вызван в момент уничтожения, программисту будет проблематично. Ведь это во многом зависит от текущего времени и планировщика ОС (таймерный поток, который уже собирается вызвать callback, может быть отложен на неопределённый срок). И isArmed отражает мнение класса, но не подсистемы posix timers. А проверить его в callback, если объект уже уничтожен, нельзя.
В общем, я сильно переработал дизайн всего - Обёртка над Posix Timers (комментарий). Теперь вроде как состояние гонки должно всегда разруливаться с помощью mutex.
Исходная версия KivApple, :
Ну я и так считаю, что с VirtualTimer в один момент времени должен работать только один поток. Это в принципе логично. Но вот убедиться, что callback точно не будет вызван в момент уничтожения, программисту будет проблематично. Ведь это во многом зависит от текущего времени и планировщика ОС (таймерный поток, который собирается вызвать callback, может быть отложен на неопределённый срок). И isArmed отражает мнение класса, но не подсистемы posix timers. А проверить его в callback, если объект уже уничтожен, нельзя.
В общем, я сильно переработал дизайн всего - Обёртка над Posix Timers (комментарий).