一. 前 言二. 架构浅析三. 流程分析 * 常见流程分析之一(Tcp异步连接) * 常见流程分析之二(Tcp异步接受连接) * 常见流程分析之三(Tcp异步读写数据 ...
boost源码剖析 boost::any 有的时候我们需要有一个万能类型来进行一些操作,这时候boost::any就派上用场了。 用法比较简单,我们来研究下boost::any是如何实现的。 原理 c 是一个强类型的语言,要实现一个万能类型可以考虑用void 来保存数据,然后用类型转换进行操作,如: 但是这样的写法有一个明显的缺点就是类型不安全。 显然我们可以用template来改进我们的程序: ...
2014-09-10 21:01 1 3838 推荐指数:
一. 前 言二. 架构浅析三. 流程分析 * 常见流程分析之一(Tcp异步连接) * 常见流程分析之二(Tcp异步接受连接) * 常见流程分析之三(Tcp异步读写数据 ...
* 前言 源码之前,了无秘密。 ——侯捷 Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会 ...
* 架构浅析 先来看一下asio的0层的组件图。 (图1.0) ...
* 常见流程分析之一(Tcp异步连接) 我们用一个简单的demo分析Tcp异步连接的流程: 这段代码中的异步连接请求在asio源码中的序列图如下: 其中,basic_socket是个模板类,tcp协议中的socket的定义 ...
boost::any可以存放任何类型的C++类型,也可以是用户自定义的类型。非常方便,可以很方便的满足在运行过程中判断数据类型,从而进行相关的操作。 函数原型: 成员函数说明: Boost::Any的实现比较简单,Any拥有一个模版构造函数,这使他可以接受任何类型 ...
* Protocol(通信协议) Protocol,是asio在网络编程方面最重要的一个concept。在第一章中的levelX类图中可以看到,所有提供网络相关功能的服务和I/O对象都需 ...
Boost条件变量可以用来实现线程同步,它必须与互斥量配合使用。使用条件变量实现生产者消费者的简单例子如下,需要注意的是cond_put.wait(lock)是在等待条件满足。如果条件不满足,则释放锁,将线程置为waiting状态,继续等待;如果条件满足,则重新获取锁,然后结束wait,继续 ...
1、auto、decltype auto是C++11中的关键字,它可以通过类型推导自动得到变量或对象的类型,需要注意的是auto会忽略引用,因为引用其实就代表原对象: ...