异步编程时boost::bind中慎用this指针

异步编程时boost::bind中慎用this指针

boost.asio 5年前 (2014-04-18) 浏览: 9

在类的成员里有时候实现了异步操作,异步的回调函数仍为该类的成员函数,比如下面。 async_write(m_socket, boost::asio::buffer(msg.c_str(), msg.size()), bind(&Games::HandSend, this, boost::asio::placeholders::error)); 上面这个例子是一个很常见的boost.

boost智能指针源代码分析

boost智能指针源代码分析

boost 5年前 (2014-04-17) 浏览: 40

首先来看shared_ptr.h inline void _sp_set_shared_from_this( ... ) { } template<typename T> inline void _sp_set_shared_from_this(shared_ptr<T>* sp, enable_shared_from_this&lt

boost::bind不同参数形式性能分析

boost::bind不同参数形式性能分析

boost.bind 5年前 (2014-04-16) 浏览: 20

boost::bind针对于值,引用,指针提供了统一的语法使用,可以利用这一特点,简化编码,来看下面的代码: #include <boost/shared_ptr.hpp> #include <boost/bind.hpp> #include <iostream> class A { public:  &

boost::asio::ip::tcp::resolver解析

boost::asio::ip::tcp::resolver解析

boost.asio 5年前 (2014-04-16) 浏览: 33

Resolver是Asio的域名解析系统,它将指定的URL和服务转化为相应的ip和port的endpoint端点。 query指定主机与服务,比如 tcp::resolver::query query("www.unix8.net", "http"); endpoint指定主机IP地址与端口,比如 boost::asio::ip::address add;

Boost::Asio::Error 与boost::asio::placeholders

Boost::Asio::Error 与boost::asio::placeholders

boost.asio 5年前 (2014-04-14) 浏览: 40

一般而言我们创建用于接收error的类型大多声明如下: boost::system::error_code error 我们用这个类型去接受在函数中产生的错误,如 socket.connect(endpoint, error); 如果连接失败,错误类型会保存到error中,比如连接主机失败可能会返回这样的错误: boost::asio::error::host_not_found; 通过if (e

boost.asio中io_service分析

boost.asio中io_service分析

boost.asio 5年前 (2014-04-14) 浏览: 24

本文从源代码的角度进行来看看io_service boost::asio::io_service io_service; 当使用同步方式编程时,没有io_service.run()调用;使用异步方式编程时,则有此调用,来看看这个函数实际上在做什么 std::size_t io_service::run() { boost::system::error_code ec; std::size_t s

boost::bind应用分析

boost::bind应用分析

boost.bind 5年前 (2014-04-09) 浏览: 13

本文主要从应用角度讨论boost::bind,源码级别的分析以后有空再写写,这里不得不称赞boost::bind比起C++标准库的bind1st,bind2nd来说,支持的参数更多,使用也更简单,另外我觉得最好还是对泛型模板编程有一定了解,对C++标准库实现有了解。 1.自由函数,bind参数个数为自由函数参数个数+1 void func_void_int_int(int a, int b) {

切换注册

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享