
boost
文章平均质量分 77
华秋实
likeyockie@163.com
展开
-
Boost::thread库的使用
概要通过实例介绍boost thread的使用方式,本文主要由线程启动、Interruption机制、线程同步、等待线程退出、Thread Group几个部份组成。正文线程启动线程可以从以下三种方式启动:第一种用struct结构的operator成员函数启动:struct callable{ void operator()() { 这里略去若干转载 2013-06-26 19:32:56 · 9871 阅读 · 0 评论 -
boost::condition的用法
首先我们看只有一个reader/一个writer的情形#include #include #include #include #include int number;boost::mutex m;boost::condition not_full;boost::condition not_empty;void writer(){ while (1) {转载 2015-02-06 16:12:20 · 2711 阅读 · 0 评论 -
BOOST_TYPEOF和BOOST_AUTO
头文件里定义了两个宏:BOOST_TYPEOF和BOOST_AUTO,分别用于仿真C++新标准的typeof和auto关键字,可以在编译期自动推导表达式的类型。它们不仅能够推导C++语言内建的int、double、数组、函数指针等等类型,也支持标准库中的容器类型,使程序员再也不需要写复杂的类型定义就能够轻松声明变量。这两个宏完全模仿了typeof和auto关键字的用法,除了因为宏的语法转载 2013-04-27 16:58:16 · 13554 阅读 · 0 评论 -
Boost::asio io_service 实现分析
io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列。Io_servie的接口提供的接口有run、run_one、poll、poll_转载 2013-05-07 14:21:09 · 8175 阅读 · 0 评论 -
unspecified-bool-type
类boost::scoped_ptr的源码中有如下声明:operator unspecified-bool-type() const; 这是个到unspecified-bool-type类型的隐式转换函数,它可以在Boolean上下文中测试一个智能指针。如果shared_ptr保存着一个有效的指针,返回值为True;否则为false。注意,转换函数返回的类型是不确定的。把返回类型当成转载 2013-05-20 14:53:31 · 2279 阅读 · 0 评论 -
static变量在Main函数之前执行
一、例1c/c++语言中,在执行main的入口函数之前,是会首先执行一段代码。而对于全局变量和static的初始化就是 在main函数之前执行的,例子如下:#include #include class static_name{public: static_name(){}; static int static_print();pri转载 2013-05-27 17:39:42 · 4574 阅读 · 0 评论 -
C++ Boost Thread 编程指南
0 前言标准C++线程即将到来。CUJ预言它将衍生自Boost线程库,现在就由Bill带领我们探索一下Boost线程库。就在几年前,用多线程执行程序还是一件非比寻常的事。然而今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率;为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序;GUI应用程序将那些费时,复杂的处理以线程的形式单独运行,以此来保证用户界面能够及时响应用转载 2013-05-08 14:37:21 · 934 阅读 · 0 评论 -
boost库之Random
Random 随机数 在很多应用中都需要使用随机数。本库力求提供一个高效的,通用的随机数库。boost库有多种随机数生成方式。先熟悉一下各种随机数生成器的概念。 数字生成器(Number Generator)它是一个函数对象,没有参数。类似于常见的rand( )。 均匀随机数生成器(Uniform Random Number Gene转载 2013-05-15 20:53:26 · 2616 阅读 · 0 评论 -
boost::pool与内存池技术
Boost库的pool提供了一个内存池分配器,用于管理在一个独立的、大的分配空间里的动态内存分配。Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况。使用pool内存池主要有以下两个优点: 1. 能够有效地管理许多小型对象的分配和释放工作,避免了自己去管理内存而产生的内存碎片和效率低下问题。 2. 告别程序内存泄漏的烦恼,pool库会在转载 2013-05-10 09:49:30 · 4500 阅读 · 0 评论 -
BOOST_STATIC_ASSERT与assert的区别
assert是运行期断言,也就是在编译期出现的错误,它不会提示;而boost中的BOOST_STATIC_ASSERT是在编译期的断言,也就是说在编译的时候就可以断言出错误。比如下面的函数:void expects_ints_to_be_4bytes(){BOOST_STATIC_ASSERT(sizeof(int)!=4);assert(sizeof(int)!=4);}转载 2013-05-20 20:56:11 · 3515 阅读 · 0 评论 -
boost之lexical_cast
第一次翻译,虽然是个很简单的函数介绍...文件boost/lexical_cast.hpp中定义了此函数:namespace boost{ class bad_lexical_cast; template Target lexical_cast(const Source& arg); template Target lexical_c翻译 2013-06-06 21:29:12 · 17444 阅读 · 2 评论 -
windows下boost的安装与初试
第1步:先从官网(www.boost.org)下载最新版的BOOST源码,如图所示我这里下的是zip的那个第2步:编译源代码(放心.这里是傻瓜式的操作,很容易操作)(1)先把源代码放在E盘,例如 E:\boost_1_53_0(2)在源代码中找到一个批处理bootstrap.bat,运行即可此时会弹出Building Boost.Jam之类,过一会之后,源代码中转载 2013-04-26 20:27:00 · 52147 阅读 · 4 评论 -
【涨姿势】boost库中的智能指针向上转换
这里稍微解释下何谓指针类型的向下转换和向上转换。向下转换是指派生类指针转换为基类指针类型,向上转换是指基类指针类型转换为派生类类型。C++一般使用dynamic_cast转换符实现向上转换。智能指针可以毫无问题的进行向下类型转换,却不能使用dynamic_cast进行向上类型转换。例如:#include "boost/shared_ptr.hpp"class Base{publ转载 2014-12-26 00:16:58 · 2636 阅读 · 0 评论 -
boost::condition_variable、boost::time_wait使用方法
boost的线程库不能强行终止,所以通过time_wait可以让其自然的结束#include #include #include #include #include using namespace std;using namespace boost;boost::mutex test_mutex;boost::condition_variable test_conditio转载 2014-12-26 00:25:09 · 9598 阅读 · 0 评论 -
Python:文件操作技巧(File operation)
读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/download/baa.txt " f = open(spath, " w " ) # Opens file for writing.Creates this file doesn't exist. f.write( " First line 1.\转载 2015-01-30 20:52:07 · 763 阅读 · 0 评论 -
【涨姿势】shared_from_this
enable_shared_from_this这个基类,提供了一个shared_from_this()公用方法可以让子类内部获取到shared_ptr的对象,用来用在类实现过程中需要传递自身指针的地方。有几个点需要注意一下:1.虽然enable_shared_from_this是基类,但它确实在shared_ptr里面初始化enable_shared_from_this的成员weak_pt转载 2013-11-08 14:51:28 · 1042 阅读 · 0 评论 -
【boost学习】之boost::asio(3)——socket编程
asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。转载 2014-10-26 17:57:38 · 1583 阅读 · 0 评论 -
【boost学习】之boost::asio(2)——io_service
解析Boost.Asio转载 2014-10-26 15:25:47 · 3519 阅读 · 0 评论 -
【boost学习】之boost::asio(4)——boost::asio::buffer用法
1.创建buffer转载 2014-10-29 01:24:08 · 7646 阅读 · 0 评论 -
【boost学习】之boost::asio(1)——Timer定时器
先跟着boost文档中asio章节的指南中的几个lizi原创 2014-10-23 09:29:32 · 21332 阅读 · 1 评论 -
【boost学习】之boost::asio(5)——io_service::run函数无任务时退出的问题
io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁。#include #include using namespace std;void test_asio_nowork(){ boost::asio::io_service ioser; cout<<"[test_asio_nowork转载 2014-10-31 00:23:02 · 2695 阅读 · 0 评论 -
bad_weak_ptr的原因
前几天解了一个bug,表象是调用sharder_frme原创 2014-10-18 18:22:19 · 16713 阅读 · 2 评论 -
不简单的单例模式Singleton
单例模式,即原创 2014-11-05 00:53:24 · 5315 阅读 · 1 评论 -
【boost学习】之boost::bind
【转自:http://blog.youkuaiyun.com/vagrxie/article/details/5509454】转载 2014-10-22 01:02:27 · 832 阅读 · 0 评论 -
使用boost库serialize序列化map等STL容器的最常见错误——error C2039
error C2039: 'serialize' : is not a member of 'stdext::map'原因:因为序列化的是map类型,内部是多个键值对,如果序列化非集合类型应该不会出现这种错误 ,如果你序列化的是其他的集合类型,可以到boost/serialization/下对应的头文件,除此外还要加上boost链接库。解决方法:(1)一定要包含原创 2015-01-30 15:20:10 · 5013 阅读 · 1 评论 -
boost::any的用法、优点和缺点以及源代码分析
boost::any用法示例:#include <iostream>#include <list>#include <boost/any.hpp>typedef std::list<boost::any> list_any;//关键部分:可以存放任意类型的对象void fill_list(list_any& la){ la.push_back(10);//存放常数转载 2015-08-20 20:20:46 · 4991 阅读 · 0 评论