1) 不要多线程同时对一个socket 进行asio::async_write, 也不要在一个线程内对一个socket多次async_write。

理由:async_write是个异步操作,数据较大时, 会分多次调用async_write_some发送出去。 因此即便是一个线程内的多个async_write, 其async_write_some也可能交叉乱序了。

2)read_handler, write_handler、timeout_handler的参数都应该是const类型的。虽然可以定义成非const型参数、修改也不会有编译错误, 但是修改不会生效。

3)各种handler应该使用堆内存、全局变量、或者shared_from_this(), 或者类变量的成员。 不能使用栈变量; 使用栈变量的话,需要使用boost::ref进行修饰。

boost::asio::deadline_timer timer(m_ioservice);
timer.expires_from_now(boost::posix_time::seconds(0));
timer.async_wait(boost::bind(&RecIO::timeout_handler, shared_from_this(), <span style="color:#FF0000;">boost::ref(timer)</span>, int(timer_queue_type), boost::asio::placeholders::error));

4)boost_auto宏, 自动推导变量类型。   <boost/typeof.hpp>

5)boost poperty_tree解析xml

http://www.oschina.net/code/snippet_126720_4952

6)boost::call_once, 保证只被执行一次。 google protobuf中也有类似实现

http://www.oschina.net/code/snippet_54334_870

boost asio相关推荐

  1. boost::asio使用UDP协议通信源码实现

    说明:以下源码来自参考文献[1], 比原文更丰富, 更有指导意义, 方便日后参考. udp servr端源码 //g++ -g udp_server.cpp -o udp_server -lboost ...

  2. boost::asio异步模式的C/S客户端源码实现

    异步模式的服务器源码 //g++ -g async_tcp_server.cpp -o async_tcp_server -lboost_system //#include <iostream& ...

  3. boost::asio中的C/S同步实例源码

    近来狂热地研究boost的开发技术,现将读书笔记整理如下: 需要说明的是, 本博该专题下面关于boost的源码是采用boost1.55版本, 运行在Ubuntu 14.04 64bit下面, 使用ap ...

  4. muduo 与 boost asio 吞吐量对比

    muduo (http://code.google.com/p/muduo) 是一个基于 Reactor 模式的 C++ 网络库,我在编写它的时候并没有以高并发高吞吐为主要目标,但出乎我的意料,pin ...

  5. boost::asio::streambuf 基本用法和注意事项

    streamsize  sgetn(char_type *store,streamsize n)    返回缓冲区下n个字符并存储到store中,并将缓冲区位置后移n个字节 代码说明:本来是想不断的通 ...

  6. boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转

    一:什么是st_asio_wrapper 它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_ ...

  7. boost asio io_service学习笔记

    转自:http://hi.baidu.com/jrckkyy/blog/item/e86835d61e60722506088b6a.html 构造函数 构造函数的主要动作就是调用CreateIoCom ...

  8. Boost asio 定时器

    Boost asio入门学习笔记 版权声明:本文为博主原创文章,未经博主允许不得转载.文章中有连接失效或是技术谬误的地方,请与我联系. https://blog.csdn.net/luchengtao ...

  9. 网上收集下boost::asio发送与传输相关的几个函数,老是忘记

    刚连接上:调用async_accept 1 boost::shared_ptr<tcp::socket> spMySocket(new tcp::socket(m_ioservice)); ...

  10. boost asio 应用方法学(二)——深入框架

    要用好它,就必须先了解它,而且不能停止于表面,必须深入到内部.而了解一件事物,先要了解它的框架,再了解它的细节.了解了框架,我们就有了提纲挈领的认识. 关于 boost asio 框架结构,在其文档中 ...

最新文章

  1. 伍六七带你学算法 入门篇-最长回文串
  2. 在不锁定表的情况下运行MySQLDump
  3. libevent中事件的添加与删除
  4. 监管落地,能否带来牙膏市场的日后繁荣?
  5. PHP中 base64_decode与base64_encode加密解密函数
  6. 阳泉2021高考成绩查询时间段,2021年阳泉高考成绩排名及成绩公布时间什么时候出来...
  7. android浏览SD卡的文件,简单实现浏览Android SD卡中的文件
  8. java常见排序算法有哪些_Java中常用的6种排序算法详细分解
  9. 把对方陷入困境中(博弈论的诡计)
  10. fscanf不读取_NCNN-Breakdown(3) 读取网络的proto信息
  11. SDN/NFV若干问题
  12. 叶氏量能大抄底(通达信副图)
  13. [leetcode]209. 长度最小的子数组
  14. Linux内核中Netfilter架构介绍
  15. Android适配64位TBS X5内核
  16. 【控件】mars3d控件的设置
  17. 判断浏览器是否支持html5
  18. CSS特效(一):制作盒子荧光特效
  19. 一台阿里云ECS下的CIDI方案 最具性价比的简化DevOps自动化部署方案
  20. 伽罗华有限域的FEC

热门文章

  1. 【深度学习】单位高斯化
  2. JVM中锁优化,偏向锁、自旋锁、锁消除、锁膨胀
  3. [Google Guava] 2.4-集合扩展工具类
  4. Spring - Java/J2EE Application Framework 应用框架 第 9 章 DAO支持
  5. 机器学习常见算法个人总结(面试用)
  6. ROS探索总结(四)(五)(六)——简单的机器人仿真 创建简单的机器人模型smartcar 使用smartcar进行仿真
  7. Python计算机视觉:安装
  8. 图像处理(四)图像分割(2)测地距离Geodesic图割
  9. 数字图像处理:第一章 概述
  10. 支持向量机SVM(四)