Нужно объяснение этому примеру boost :: asio timer - PullRequest
5 голосов
/ 20 марта 2010

В третьем уроке по Boost asio есть строка, в которой показано, как обновить таймер и как предотвратить его смещение. Строка следующая:

 t->expires_at(t->expires_at() + boost::posix_time::seconds(1));

Возможно, это я, но я не смог найти документацию по второму использованию e xpires_at() без параметров. expires_at(x) устанавливает новый срок действия, отменяя все ожидающие обработчики завершения. Так предположительно expires_at () что, время возврата последнего истечения? Таким образом, добавляя одну секунду, если должно быть какое-то количество мс, скажем, n мс, то оно по сути будет «вычтено» из следующего истечения, поскольку учитывается время? Что произойдет, если в этом примере время выполнения этого обработчика будет больше 1 секунды? Срабатывает ли сразу?

1 Ответ

2 голосов
/ 20 марта 2010

expires_at () возвращает время, когда установлено время ожидания. Так что это переместит тайм-аут на 1 секунду позже.

Когда вы установите время с помощью expires_at (x), вы получите возврат 0, если он уже был вызван из-за уже прошедшего времени. Если return больше 0, это указывает на количество отмен, которые были сделаны.

...