Boost.Aiso教程 2
来源:互联网 发布:java开发平台结构图 编辑:程序博客网 时间:2024/06/05 19:46
Timer.2-以异步方式使用计时器
#include <iostream>#include <boost/asio.hpp>#include <boost/date_time/posix_time/posix_time.hpp>void print(const boost::system::error_code& /*e*/){ std::cout << "Hello, world!" << std::endl;}int main(){ boost::asio::io_service io; boost::asio::deadline_timer t(io, boost::posix_time::seconds(5)); t.async_wait(&print); io.run(); return 0;}
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
使用澳洲的异步功能意味着将异步操作完成时调用的回调函数。在这个程序中,我们定义调用print在异步等待完成时要调用的函数。
void print(const boost::system::error_code& /*e*/)
{
std::cout << "Hello, world!" << std::endl;
}
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
下一步,而不是做在教程 Timer.1 阻塞等待,我们调用deadline_timer::async_wait()函数来执行异步等待。调用此函数时,我们通过了上述定义print回调处理程序。
t.async_wait(&print);
aiso库提供了保证,只会从目前正在调用io_service::run()的线程调用处理程序的回调。因此除非调用io_service::run()函数将永远不会调用回调的异步等待完成。
Io_service::run()函数也将继续运行,而是仍然"工作"要做。在此示例中,工作是异步等待计时器,所以调用不会返回直到计时器已过期和回调已完成。
它是重要的是记住给 io_service 一些工作要做在调用io_service::run()之前。例如,如果我们忽略了对deadline_timer::async_wait()的上述调用,io_service 有限,不会有任何的工作要做,并因此将立即返回io_service::run() 。
io.run();
return 0;
}
0 0
- Boost.Aiso教程 2
- Boost.Aiso教程 1
- Boost.Aiso教程 3
- Boost.Aiso教程 4 使用成员函数作为一个句柄
- Boost.Aiso教程 5-同步多线程程序中的处理程序
- Boost.Aiso概述 基本原理
- boost库之aiso通信
- AISO教程UDP组播的例程
- Boost.Aiso概述 核心概念和功能0
- Boost.Aiso概述 核心概念和功能1
- boost教程
- boost教程
- Boost的状态机库教程(2)
- Boost.Signals 教程
- Boost教程网址链接
- Boost的UDP教程
- Boost正则表达式教程
- boost线程池教程
- Solr-项目中的使用
- Java字符串format-用户号补齐格式化应用
- TCP UDP协议网络通讯
- 如何打jar包和运行jar包
- 【BZOJ4876】 [Zjoi2017]线段树
- Boost.Aiso教程 2
- 最简单的 UBO(Uniform Buffer Object) 【OpenGL】【GLSL】
- Mybatis 关联映射
- Hibernate_映射_关联关系_多对多映射1
- SpringMVC个人零碎总结
- Android Framework: Binder(1)-Android IPC
- bzoj 1692 [Usaco2007 Dec]队列变换
- springfox整合SpringMVC
- strcpy,strcat,strstr,strcmp,memmove的实现