boost asio exire_at не запускается - PullRequest
0 голосов
/ 15 марта 2020

Я попытался запустить следующий пример boost asio, но в любом случае функция expire_at не вызывает мой обратный вызов. Если я заменю объект ptime на простые секунды, он будет работать нормально.

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
boost::asio::io_service io_service;

void callback(const boost::system::error_code& e) {
    std::cout << "callback: " << e << std::endl;
}

int main(void) {

    boost::asio::deadline_timer timer(io_service, boost::posix_time::time_from_string("2020-03-14 23:44:12.000"));
    timer.async_wait(callback);
    io_service.run();
    return 0;
}

что я делаю не так?

1 Ответ

1 голос
/ 15 марта 2020

Проблема в том, что вы не указываете часовой пояс.

Например, я нахожусь в часовом поясе +2.

Предполагая, что текущее время: "2020-03-14 23 : 44: 10.000 ", учитывая этот формат, мне нужно установить значение 2020-03-14 21: 44: 12.000. для его запуска через 2 секунды. Или обновите формат и укажите часовой пояс.

Совет. Установите дату в прошлом, и вы должны сразу увидеть триггер обратного вызова.

...