摘要:前言标准C++线程即将到来。预言它将衍生自Boost线程库,现在让我们探索一下Boost线程库。几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂...
阅读全文
随笔分类 - Boost
摘要:阅读对象本文假设读者有几下Skills[1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念。[2]熟悉C++开发,在开发工具中,能够编译、设置boost::thread库。环境[1]Visual Studio 2005/2008 with SP1[2]boost1.39/1.40...
阅读全文
摘要:本来想自己写一篇关于boost thread的文章来着,从网上一搜,觉得这篇文章入门最合适了。转自:http://www.cppblog.com/janvy/archive/2010/03/25/110498.aspx最近在做一个消息中间件里面涉及到多线程编程,由于跨平台的原因我采用了boost线程...
阅读全文
摘要:from:http://www.cppblog.com/shanoa/archive/2009/06/26/88606.aspx花了足足3天时间,外加1天心情休整,终于在第5天编写出了一个能运行的基于asio和thread_group的框架,差点没气晕过去,把源码都看懂了才感觉会用了。测试了一下,d...
阅读全文
摘要:错误码很重要,可以由此判断网络连接到底发生了神马事情,从而驱动高层逻辑的行为。只有笼统的错误码判断的网络层是不够规范的,鄙人觉得有些错误码还是需要在网络层就区分开的,特此记录一些当前实验的错误码以及发生原因。以下是一部分在async_receive()的handler处捕获到的比较有用的错误码错误码...
阅读全文
摘要:我们的程序中经常会用到线程来执行某些异步操作,而有些时候我们的线程执行的函数是这个样子的:[cpp]view plaincopyprint?voidThreadBody(){while(true){std::cout#include/**注意,windows操作系统下若要编译此程序需要建立的是WIN...
阅读全文
摘要:多线程编程中还有一个重要的概念:ThreadLocalStore(TLS,线程局部存储),在boost中,TLS也被称作TSS,ThreadSpecificStorage。boost::thread库为我们提供了一个接口简单的TLS的面向对象的封装,以下是tss类的接口定义:classtss{pub...
阅读全文
摘要:barrierbarrier类的接口定义如下:1classbarrier:privateboost::noncopyable//Expositiononly2{3public:4//construct/copy/destruct5barrier(size_tn);6~barrier();78//wa...
阅读全文
摘要:下面先对condition_impl进行简要分析。condition_impl在其构造函数中会创建两个Semaphore(信号量):m_gate、m_queue,及一个Mutex(互斥体,跟boost::mutex类似,但boost::mutex是基于CriticalSection的):m_mute...
阅读全文
摘要:除了thread,boost::thread另一个重要组成部分是mutex,以及工作在mutex上的boost::mutex::scoped_lock、condition和barrier,这些都是为实现线程同步提供的。mutexboost提供的mutex有6种:boost::mutexboost::...
阅读全文
摘要:thread自然是boost::thread库的主 角,但thread类的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的编译选项的不同,分别决定使用 Windows线程API还是pthread,或者MacintoshCarbon平台的thread实现。...
阅读全文
摘要:---恢复内容开始---asioboost目录(?)[-]一前言二实现思路通讯包数据结构连接对象连接管理器服务器端的实现对象串行化一、前言boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的...
阅读全文
摘要:asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。客户端客户端的代码如下:#include#include#includeusingboost::asio::ip::tcp;intmain(intarg...
阅读全文
摘要:创建buffer在io操作中,对数据的读写大都是在一个缓冲区上进行的,在asio框架中,可以通过asio::buffer函数创建一个缓冲区来提供数据的读写。buffer函数本身并不申请内存,只是提供了一个对现有内存的封装。chard1[128];size_tbytes_transferred = s...
阅读全文
摘要:IO模型io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。asio::io_serviceio_service;asio::ip::tcp::socketsocket(io_service);在as...
阅读全文
摘要:同步Timerasio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。#include#includeintmain(){boost::asio::io_serviceio;boost::asio::deadline_...
阅读全文
摘要:Christopher KohlhoffCopyright © 2003-2012 Christopher M. Kohlhoff以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt)Boost....
阅读全文
摘要:asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。客户端客户端的代码如下:#include#include#includeusingboost::asio::ip::tcp;intmain(intarg...
阅读全文
摘要:创建buffer在io操作中,对数据的读写大都是在一个缓冲区上进行的,在asio框架中,可以通过asio::buffer函数创建一个缓冲区来提供数据的读写。buffer函数本身并不申请内存,只是提供了一个对现有内存的封装。chard1[128];size_tbytes_transferred = s...
阅读全文
摘要:boost::asio设置同步连接超时CSDN上求助无果,只好用自创的非主流方法了。asio自带的例子里是用deadline_timer的async_wait方法来实现超时的,这种方法需要单独写一个回调函数,不利于把连接和超时封装到单个函数里。传统的Winsock编程可以先把socket设为非阻塞,...
阅读全文