
boost
文章平均质量分 87
twtydgo
能够独立思考
展开
-
boost-asio之一
一 简介 Boost Asio ( asynchronous input and output)关注异步输入输出。Boost Asio库提供了平台无关性的异步数据处理能力(当然它也支持同步数据处理)。一般的数据传输过程需要通过函数的返回值来判断数据传输是否成功。Boost Asio将数据传输分为两个独立的步骤:采用异步任务的方式开始数据传输。 将传输结果通知转载 2016-03-10 15:59:07 · 469 阅读 · 0 评论 -
boost::condition_variable 设计生产者消费者队列
boost::condition_variable 用法:当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下:·当持有锁之后,线程调用wait·wait解开持有的互斥锁(mutex),阻塞本线程,并将自己加入到唤醒队列中·当收原创 2016-06-16 15:54:52 · 843 阅读 · 0 评论 -
boost多平台编译方法
1.通用规则多数库是不需要预先编译的,include hpp文件就能用。如果出现链接失败,那就是可能需要编译库了。boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来。在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam。bootstrap脚本可以传入参数,以在编译bjam过程中原创 2016-06-14 16:20:25 · 1212 阅读 · 0 评论 -
boost线程间通信和传递参数
当需要线程等待某个事物时,可以创建一个condition对象,然后通过这个对象来通知那些等待的线程。#include #include #include #include #include #include class Request { /*...*/ }; // A simple job queue class; don't do this, use原创 2016-06-15 16:08:12 · 3822 阅读 · 0 评论 -
模板类高效线程安全的实现Queue
保证同一时刻多个线程不会同时修改同一个共享资源,那么这个程序是线程安全的,或者是串行化访问资源的。可以使用mutex类来控制线程的并发问题。123456789101112131415161718192021原创 2016-06-15 14:50:24 · 1024 阅读 · 0 评论 -
win7 vs2012/2013 编译boost 1.59
boost官网上提供了使用指导,part2:Instllation就说明了如何去编译,地址:http://www.boost.org/boost-build2/doc/html/index.html经过测试,2012和2013步骤相同,这里以2012为例。1、打开VS2012 Native Tools Command,可以从开始--Microsoft Vis原创 2016-06-14 16:21:53 · 1423 阅读 · 0 评论 -
使用boost::shared_ptr做为线程的参数
使用linux下的线程创建函数pthread_create已久,在传递给它void*型的入口参数时,总是两种方式:1. 在堆中创建,传入参数指针至线程中,由线程内部释放或等待线程退出后再释放;2. 不在堆中创建或使用全局变量;虽然在各种书上提及这种方式的种种不足,但我一直用得还挺好.主要就是注意资源的释放就成,毕竟这种低层的API能给程序员最大的灵活性,所谓有空间才能发挥嘛.但不可原创 2016-06-13 19:32:13 · 1200 阅读 · 0 评论 -
Boost-Asio的使用技巧
Boost.Asio的使用技巧基本概念Asio proactorI/O服务work类run() vs poll()stop()post() vs dispatch()buffer类缓冲区管理I/O对象socket信号处理定时器strand参考最近尝试使用了一下Boost.Asio,不知道是否原创 2016-03-11 16:51:48 · 840 阅读 · 0 评论 -
boost-io_service的工作方式
io_service在ASIO中有着举足轻重的地位置如果对io_service的实现不感兴趣可以选择性无视这篇文章。在开始说io_service之前,先介绍一下ASIO给我们提供的可用于TCP服务器开发的组件。boost::asio::ip::tcp::acceptor 用于监听与接受连接的类。boost::asio::ip::tcp::socket原创 2016-03-11 16:16:53 · 2410 阅读 · 0 评论 -
Boost-ioservices介绍
IO模型io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。 asio::io_service io_service; asio::ip::tcp::socket socket(io_service);在asio框架中,同步的io主要流程如下:转载 2016-03-11 14:49:57 · 504 阅读 · 0 评论 -
boost-Timer介绍
同步Timerasio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。 #include #include int main() { boost::asio::io_service io; boost::asio:原创 2016-03-11 14:34:55 · 396 阅读 · 0 评论 -
boost-asio-buffer介绍
1. asio::buffer常用的构造方法asio::buffer有多种的构造方法,而且buffer大小是自动管理的1.1 字符数组 char d1[128]; size_t bytes_transferred = socket.receive(boost::asio::buffer(d1)); 1.2 字符向量转载 2016-03-10 17:45:16 · 567 阅读 · 0 评论 -
Boost-asio之四
下面介绍Boost.Asio的异常处理和计时器(timer)一 Exceptions Boost.Asio提供两种异常处理方式:通过try/catch的方式获取异常或者通过错误码的方式。 下面是一个通过try/catch的方式的一个例子:[cpp] view plain copy print?#include转载 2016-03-10 17:21:55 · 458 阅读 · 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的某个线程中被执行。对转载 2016-03-10 17:21:16 · 764 阅读 · 0 评论 -
Boost-asio之二
上一篇介绍了Boost.Asio的一些特性,但是相对抽象和离散,这篇博客从Boost.Asio的基础知识一步步深入,读完之后对Boost.Asio会有全面的了解和掌握。Boost.Asio通过采用C++以及Boost库的语法特性,提供跨平台的异步网络IO能力。因此使用Boost.Asio需要基本的网络知识,C++、Boost知识。 io_service是Boost.Asio的核心转载 2016-03-10 17:18:47 · 493 阅读 · 0 评论 -
BOOST库 条件变量--多线程通信机制
1相关理念(1)类名条件变量和互斥变量都是boost库中被封装的类。 (2)条件变量条件变量是thread库提供的一种等待线程同步的机制,可实现线程间的通信,它必须与互斥量配合使用,等待另一个线程中某个事件发生后本线程才能继续执行。 (3)互斥变量互斥量是一种用于多线程编程的手段,它可以在多线程编程中防止多个线程同时操作共享资源[原创 2016-06-16 15:56:33 · 468 阅读 · 0 评论