Boost
文章平均质量分 88
ithiker
"All problems in computer science can be solved by another level of indirection."
展开
-
std::enable_if与boost::enable_if,boost::enable_if_c的区别与联系
标准库与boost的这三个enable_if系列的函数可以帮助我们实现模板函数的重载。一般函数的重载先看一个一般函数重载的例子:#include <iostream>void print(int i){ std::cout << "Integral: " << i << std::endl;}void print(double f){ std::cout << "Floating point: " << f原创 2021-10-29 23:13:33 · 491 阅读 · 0 评论 -
Boost.Asio 介绍--之二
上一篇介绍了Boost.Asio的一些特性,但是相对抽象和离散,这篇博客从Boost.Asio的基础知识一步步深入,读完之后对Boost.Asio会有全面的了解和掌握。Boost.Asio通过采用C++以及Boost库的语法特性,提供跨平台的异步网络IO能力。因此使用Boost.Asio需要基本的网络知识,C++、Boost知识。原创 2014-03-30 23:48:34 · 2132 阅读 · 0 评论 -
Boost.Asio介绍--之三
如果说io_service是Boost.Asio的大脑的话,那么它的成员函数dispatch和post就是它的左臂右膀了。post的主要作用是触发io_service执行post指定的handler并立即返回,post内部实现不会允许io_service调用handler方法。io_service保证handler一定会在调用run,run_one,poll,poll_one的某个线程中被执行。原创 2014-04-04 17:35:21 · 5331 阅读 · 0 评论 -
Boost.Asio介绍--之四
下面介绍Boost.Asio的异常处理和计时器(timer)一 Exceptions Boost.Asio提供两种异常处理方式:通过try/catch的方式获取异常或者通过错误码的方式。 下面是一个通过try/catch的方式的一个例子:#include #include #include #include #include #inc原创 2014-04-07 11:15:02 · 2067 阅读 · 0 评论 -
Boost Asio介绍--之一
一 简介 Boost Asio ( asynchronous input and output)关注异步输入输出。Boost Asio库提供了平台无关性的异步数据处理能力(当然它也支持同步数据处理)。一般的数据传输过程需要通过函数的返回值来判断数据传输是否成功。Boost Asio将数据传输分为两个独立的步骤:采用异步任务的方式开始数据传输。将传输结果通知调翻译 2014-03-26 17:58:22 · 4887 阅读 · 1 评论 -
Linux下Boost.Asio Proactor模式实现分析
背景:epoll的实现是基于回调的,如果fd有期望的事件发生就通过回调函数将其加入epoll就绪队列中,用户针对该队列中的文件句柄发起相应操作,如read等,此时数据真正才会开始从内核buffer写入应用buffer中,整个过程是一种同步IO。而Boost.Asio的说明文档中明确其采用Proactor模式实现了异步IO,也就是说用户在发起async_read后,可以去进行其它操作,内核将原创 2014-04-23 16:25:16 · 6163 阅读 · 1 评论 -
Boost signal 代码示例
网上介绍Boost signal原理的文章很多,这里不介绍原理,仅贴一些示例代码,这在初步接触Boost signal时能够有个较好的感性认识,深入了解需要去体会挖掘boost源码。代码基本上来自Boost turioal,其中有一些错误会导致编译不过,这里都做了更正:1. 基本运用#include #include #include using namespace std;u原创 2015-01-23 16:38:47 · 1603 阅读 · 0 评论 -
C++ 智能指针(shared_ptr/weak_ptr)源码分析
C++11目前已经引入了unique_ptr, shared_ptr, weak_ptr等智能指针以及相关的模板类enable_shared_from_this等。shared_ptr实现了C++中的RAII机制,它不仅仅具有一般指针(build-in/raw)的特性,更重要的是它可以自动管理用户在堆上创建的对象的生命周期,让用户不用为内存回收操心,避免内存泄漏。一般的智能指针都定义为一个模板类,...原创 2016-05-29 18:24:25 · 12646 阅读 · 4 评论