boost:asio学习心得
2015-10-05 16:53
302 查看
Boost智能指针——shared_ptr
reactor和proactor模式
Boost.Asio的使用技巧
Boost.Asio性能测试
使用asio搭建服务器
socket Tcp编程笔记--心跳包的实现逻辑
1.三种使用方式
1)single thread && single io_service, 最简单, 性能最一般
2)multithread && single io_service
3)io_service per thread. multi io_service.
这三个性能是依次递增的。
2.在使用ASIO时,io_servie应该尽量多,这样可以使其epoll_wait占用的时间片最多,这样可以最大限度的响应IO事件,降低响应时延。但是每个io_servie::run占用一个线程,所以io_servie最佳应该和CPU的核数相同。
3.io_service是一个工作队列的模型。在使用过程中一般有如下几个需要注意的地方:
run函数在io事件完成后会退出,导致后续基于该对象的异步io任务无法执行。
由于io_service并不会主动常见调度线程,需要我们手动分配,常见的方式是给其分配一个线程,然后执行run函数。但run函数在io事件完成后会退出,线程会终止,后续基于该对象的异步io任务无法得到调度。
解决这个问题的方法是通过一个asio::io_service::work对象来守护io_service。这样,即使所有io任务都执行完成,也不会退出,继续等待新的io任务。
boost::asio::io_service io;
boost::asio::io_service::work work(io);
io.run();
boost.asio系列——Timer
boost.asio系列——io_service
boost.asio系列——socket编程
boost.asio系列——buffer
Boost::asio
io_service 实现分析
Boost
ASIO proactor 浅析
reactor和proactor模式Boost.Asio的使用技巧
Boost.Asio性能测试
使用asio搭建服务器
socket Tcp编程笔记--心跳包的实现逻辑
1.三种使用方式
1)single thread && single io_service, 最简单, 性能最一般
2)multithread && single io_service
3)io_service per thread. multi io_service.
这三个性能是依次递增的。
2.在使用ASIO时,io_servie应该尽量多,这样可以使其epoll_wait占用的时间片最多,这样可以最大限度的响应IO事件,降低响应时延。但是每个io_servie::run占用一个线程,所以io_servie最佳应该和CPU的核数相同。
3.io_service是一个工作队列的模型。在使用过程中一般有如下几个需要注意的地方:
run函数在io事件完成后会退出,导致后续基于该对象的异步io任务无法执行。
由于io_service并不会主动常见调度线程,需要我们手动分配,常见的方式是给其分配一个线程,然后执行run函数。但run函数在io事件完成后会退出,线程会终止,后续基于该对象的异步io任务无法得到调度。
解决这个问题的方法是通过一个asio::io_service::work对象来守护io_service。这样,即使所有io任务都执行完成,也不会退出,继续等待新的io任务。
boost::asio::io_service io;
boost::asio::io_service::work work(io);
io.run();
相关文章推荐
- 软件测试知识点
- 阅读《时间,管理把握最宝贵的财富》摘录(1)
- java基础---类中的名称
- Swift和OC代码注释分析 #pragma mark, FIXME and TODO
- 第四周 线性表(二)--链表 项目一 -- 建立单链表
- Dubbo项目实战 (一)服务划分粒度
- 第六周 周一 栈链
- Oracle存储过程实例
- 阴阳
- Dubbo项目实战 (一)服务划分粒度
- java编程思想-持有对象
- 第四周,项目2-建设“单链表”算法库。
- 详细阐述约瑟夫环问题(报数出队问题)
- maints使用
- 第6周项目2——建立栈链算法库
- servlet web 乱码问题透彻解决
- 你的职场身价值几何?
- 改变UITableView的headerView、footerView背景颜色
- 第6周项目1—建立顺序栈算法库
- 数据结构实践——自建算法库链栈