boost::deadline_timer

boost::deadline_timer

定义
typedef basic_deadline_timer<boost::posix_time::ptime> deadline_timer;
basic_deadline_timer是个模板类。

构造函数
deadline_timer有三个构造函数:
1 explicit basic_deadline_timer(boost::asio::io_service& io_service)
    : basic_io_object<TimerService>(io_service)
    {
    }
        构造函数有一个参数io_service,几乎所有asio的程序都用到io_service(这个类以后再学习)。这个
构造函数创建了一个没有结束时间的定时器。在使用这个定时器之前,我们必须条用其成员函数expires_at或
expires_from_now来设置结束时间。
    例子:

boost::asio::deadline_timer t1(io);
t1.expires_from_now(boost::posix_time::seconds(1));//从现在开始1秒后结束

2 basic_deadline_timer(boost::asio::io_service& io_service, const time_type& expiry_time)
    : basic_io_object<TimerService>(io_service)
    {
    }
        此构造函数有两个参数,第二个函数类型time_type对deadlien_timer来说是ptime类型,这个构造函数创建了一个绝对时间的定时器。定时器在时间为expiry_time时结束。
        例子:

std::string abstime = "2015-01-22 13:10:23"
boost::asio::deadline_timer t2(io, boost::posix_time::time_from_string(abstime));//构造一个绝对定失效的定时器
这里time_from_string()函数会把abstime转换成ptime类型的时间

3 basic_deadline_timer(boost::asio::io_service& io_service, const duration_type& expiry_time)
    : basic_io_object<TimerService>(io_service)
{
}
此构造函数也有两个参数,第二个参数类型duration_type是个相对时间,相对当前时间可以秒、分、时等等。
例子:
boost::asio::deadline_timer t(io, boost::posix_time::seconds(2));//从当前时间开始2s以后结束

成员函数
1 std::size_t cancel()
        此函数将取消定时器;同时任何在等待此定时器的异步操作都被取消,所有被取消异步操作的handler都会被调用,参数error_code被设置为boost::asio::error::operation_aborted。
       返回被取消异步操作的个数,同时抛出boost::system::system_error Thrown on failure。 注意当在调用cancel这个函数时,定时器刚好结束,任何在等待被调用队列的异步操作将不会被取消,任何正在被调用的异步操作将不会被取消。

2 std::size_t cancel(boost::system::error_code& ec)
       这个函数的作用和无参数的cancel()函数作用相同。在调用此函数时如果出现错误,参数ec指出出现什么错误。

3 std::size_t cancel_one()
        此函数将取消定时器,并且强制一个在等待此定时器的异步操作被被取消,这个被取消异步操作的handler被调用,调用顺FIFO,参数error_code被设置为boost::asio::error::operation_aborted。
       返回值为0或1。
       注意其他在等待的异步操作在定时器结束时,还会被调用,看例子:
<
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值