




В CodeProject есть хорошая статья, здесь, в которой описаны различные таймеры, доступные в Windows, и есть главы, озаглавленные «Таймеры очереди» и «Сделайте свой собственный таймер».
Для независимости от платформы вам нужно будет реализовать реализации для разных платформ внутри пар #ifdef -- #endif. Я не вижу ничего менее уродливого, чем это.
Boost::ASIO содержит реализацию асинхронного таймера. Это может сработать для вас.
Вы также можете получить версию ASIO без ускорения от think-async.blogspot.com/2008/05/boostasio-vs-asio.html; с которым немного легче справиться ..
Это не соответствует всем вашим критериям, но ... Я написал серию сообщений в блоге об очереди таймера для окон, которая реализована в терминах внешнего поставщика времени и которая либо опрашивается, либо управляется потоком. Серия поставляется с исходным кодом и тестами, цель которых - продемонстрировать тестирование достаточно сложного кода. В любом случае, вы могли бы использовать часть кода или идей, если никто не предложит лучшего варианта.
Articles start here: http://www.lenholgate.com/archives/000306.html
Спасибо, это выглядит довольно расширяемым, хотя в нем упускается «легковесная» часть - скомпилированный код очень мал, но требуемые дополнительные источники тяжелы.