Это часто необходимая функциональность для моделирования и воспроизведения входящих данных или событий как можно быстрее.
Для решения этой проблемы люди используют цикл событий, например, libevent
или boost::asio
.Текущее время получается из цикла событий (например, время, когда вернулось epoll
) и сохраняется в переменной цикла событий текущее время .Вместо использования gettimeofday
или clock_gettime
время считывается из этой переменной current time .Все таймеры управляются циклом событий текущее время .
При моделировании / воспроизведении цикл событий текущее время получает временную метку следующего события, следовательно, исключаются временные интервалы между событиями и воспроизводится события как можно быстрее.И ваши таймеры все еще работают и запускаются между событиями, как в реальном времени, но без задержек.Для того, чтобы это работало с вашим сохраненным потоком событий, ваш реплей должен, конечно, содержать метку времени каждого события.