BOOST库 条件变量--多线程通信机制

1相关理念 (1)类名 条件变量和互斥变量都是boost库中被封装的类。   (2)条件变量 条件变量是thread库提供的一种等待线程同步的机制,可实现线程间的通信,它必须与互斥量配合使用,等待另一个线程中某个事件发生后本线程才能继续执行。   (3)互...

2016-06-16 15:56:33

阅读数:202

评论数:0

boost::condition_variable 设计生产者消费者队列

boost::condition_variable 用法: 当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下: ·当持有锁之后,线程调用wai...

2016-06-16 15:54:52

阅读数:463

评论数:0

boost线程间通信和传递参数

当需要线程等待某个事物时,可以创建一个condition对象,然后通过这个对象来通知那些等待的线程。 #include #include #include #include #include #include   class Request { /*...*/ }; ...

2016-06-15 16:08:12

阅读数:1593

评论数:0

模板类高效线程安全的实现Queue

保证同一时刻多个线程不会同时修改同一个共享资源,那么这个程序是线程安全的,或者是串行化访问资源的。可以使用mutex类来控制线程的并发问题。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

2016-06-15 14:50:24

阅读数:546

评论数:0

win7 vs2012/2013 编译boost 1.59

boost官网上提供了使用指导,part2:Instllation就说明了如何去编译,地址: http://www.boost.org/boost-build2/doc/html/index.html 经过测试,2012和2013步骤相同,这里以2012为例。 1...

2016-06-14 16:21:53

阅读数:1048

评论数:0

boost多平台编译方法

1.通用规则 多数库是不需要预先编译的,include hpp文件就能用。如果出现链接失败,那就是可能需要编译库了。 boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来。在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*...

2016-06-14 16:20:25

阅读数:914

评论数:0

使用boost::shared_ptr做为线程的参数

使用linux下的线程创建函数pthread_create已久,在传递给它void*型的入口参数时,总是两种方式: 1. 在堆中创建,传入参数指针至线程中,由线程内部释放或等待线程退出后再释放; 2. 不在堆中创建或使用全局变量; 虽然在各种书上提及这种方式的种种不足,但我一直用得还挺好...

2016-06-13 19:32:13

阅读数:281

评论数:0

Boost-Asio的使用技巧

Boost.Asio的使用技巧 基本概念 Asio proactor I/O服务 work类 run() vs poll() stop() post() vs dispatch() buffer类 缓冲区管理 I/O对象 socket 信号处...

2016-03-11 16:51:48

阅读数:426

评论数:0

boost-io_service的工作方式

io_service在ASIO中有着举足轻重的地位置如果对io_service的实现不感兴趣可以选择性无视这篇文章。在开始说io_service之前,先介绍一下ASIO给我们提供的可用于TCP服务器开发的组件。 boost::asio::ip::tcp::acceptor ...

2016-03-11 16:16:53

阅读数:1590

评论数:0

Boost-ioservices介绍

IO模型 io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。     asio::io_service io_service;     asio::ip::tcp::socket socket...

2016-03-11 14:49:57

阅读数:317

评论数:0

boost-Timer介绍

同步Timer asio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。     #include      #include      int main()     {       ...

2016-03-11 14:34:55

阅读数:150

评论数:0

boost-asio-buffer介绍

1. asio::buffer常用的构造方法 asio::buffer有多种的构造方法,而且buffer大小是自动管理的 1.1 字符数组   char d1[128];   size_t bytes_transferred = socket.re...

2016-03-10 17:45:16

阅读数:340

评论数:0

Boost-asio之四

下面介绍Boost.Asio的异常处理和计时器(timer) 一  Exceptions         Boost.Asio提供两种异常处理方式:通过try/catch的方式获取异常或者通过错误码的方式。         下面是一个通过try/catch的方式的一个例子: ...

2016-03-10 17:21:55

阅读数:306

评论数:0

Boost-asio之三

如果说io_service是Boost.Asio的大脑的话,那么它的成员函数dispatch和post就是它的左臂右膀了。post的主要作用是触发io_service执行post指定的handler并立即返回,post内部实现不会允许io_service调用handler方法。io_service...

2016-03-10 17:21:16

阅读数:488

评论数:0

Boost-asio之二

上一篇介绍了Boost.Asio的一些特性,但是相对抽象和离散,这篇博客从Boost.Asio的基础知识一步步深入,读完之后对Boost.Asio会有全面的了解和掌握。Boost.Asio通过采用C++以及Boost库的语法特性,提供跨平台的异步网络IO能力。因此使用Boost.Asio需要基本的...

2016-03-10 17:18:47

阅读数:305

评论数:0

boost-asio之一

一  简介          Boost Asio ( asynchronous input and output)关注异步输入输出。Boost Asio库提供了平台无关性的异步数据处理能力(当然它也支持同步数据处理)。一般的数据传输过程需要通过函数的返回值来判断数据传输是否成功。Boos...

2016-03-10 15:59:07

阅读数:311

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭