自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 boost之bind源码剖析

1.为什么使用bind引用《Beyond the C++ Standard Libarary: An introduction to Boost》中的原文,如下:a. 使函数和函数对象适用于标准库算法b. 使用一致的语汇法创建绑定器binderc. 强大的函数组合(functional composition)2. 使用bind的例子,请参考《Beyond the C++ Standard Lib

2008-05-10 22:07:00 2786 2

原创 C可变参数宏

C99引入__VA_ARGS__宏用以处理可变参数,使用方法如下:#define msg(format, ...)  printf(format, __VA_ARGS__)上面的宏定义遇到类msg("hello %s!/n", "world"); 时,即带有参数的情况可以正常工作当遇到msg("hello world!/n")时则编译通不过,通过把宏展开,才发现该宏被展开为printf("hell

2008-05-08 20:22:00 864

原创 C中的内联函数行为

C标准规定内联只是对C编译器的一个建议而不是强制要求,编译器可以选择内联也可以选择不内联。cc不会内联函数,除非-xO3及以上,并且只有后端认为内联能够带来性能上的提升时才会进行内联,没有办法强制cc对函数进行内联。 C99对inline function的有关描述可见6.7.4对于static inline函数,cc根据编译选项及后端判断,如果不能内联,则产生一个reference,到时候调用该

2008-05-07 22:20:00 4153 1

原创 C++ template metaprogramming学习笔记一

概念:Metadata:能够在编译期被操作的东西就是元数据,分成两类:类型和非类型,这两类都可以做为模板参数。整数类型,函数的指针或引用,成员指针(这些都可以转化成整数,因此是合法的)Metafunction:类模板,它的所有参数都是类型;                            类,有公共的可访问的内嵌类;多态:允许使用不同的参数类型的性质就是多态,字面上即“多种形式的能力”;在C

2008-04-25 21:50:00 1718 1

原创 tr1中的智能指针详解及使用示例(Rev)

在C++98中,我们已经有了auto_ptr(在头文件memory中)用于对资源的管理,但由于auto_ptr自身的局限制,使得auto_ptr的使用受到很大的限制,并且带来一系列“诡异”的bug,究其原因,均是由于auto_ptr的“所有权”所致,我们注意到,对于普通的copy ctor,其形式一般为Type(const Type& rhs){...},但对于auto_ptr其copy ctor

2008-04-19 11:11:00 1560

原创 lock prefix

 关于同步的原语,无非就那么几种,用于进程间同步的记录锁、信号量(record lock, semaphore), 用于线程间同步的互斥量、读写锁、条件变量(mutex, rwlock, condition variable),在某些特殊的场合下,我们可以自己实现简单的用户态的锁来进行同步,这依赖于lock prefix。根据intel 64 and IA-32 architectures sof

2008-04-10 14:18:00 1684

原创 malloc源码剖析

对malloc的源码剖析源于我自己实现的共享内存分配器,使用buddy算法和红黑树结构实现对共享内存的分配回收管理,对其性能进行测试的时候,发现性能只有malloc的1/3~1/2,原本以为自己的实现性能应该比malloc高的,结果出乎意外,这让我产生窥探dlmalloc源码的好奇心,为此,找到http: //www.malloc.de/malloc/ptmalloc2.tar.gz的源代码进行分

2008-04-08 02:51:00 4756

翻译 立足现实 与时俱进:C++ 1991-2006 reference

引用:[1] David Abrahams: Exception-Safety in Generic Components.M. Jazayeri, R. Loos, D. Musser (eds.): Generic Programming,Proc. of a Dagstuhl Seminar. Lecture Notes on Computer Science. Volume 1766.

2008-03-29 17:00:00 2538

翻译 立足现实 与时俱进:C++ 1991-2006 partVI

1、   C++0x从1997年晚期到2002年,标准委员会小心谨慎地避免关于语言扩展的严肃的讨论。这允许编译器、工具和库实现者能够赶上标准,使得使用者能够吸收由标准C++所支持的编程技术。我第一次使用“C++0x”术语是在2000年之前,并通过出席委员会会议和其它2001年之前的会议,开始讨论“C++0x的方向”。到2003年,委员会再次考虑语言扩展。“扩展工作组”是由“演化工作组”构成的。

2008-03-29 16:59:00 1376

翻译 立足现实 与时俱进:C++ 1991-2006 partV

1、   标准维护:1997-2005在标准通过之后,ISO进程进入了“维护模式”差不多5年。C++委员会决定这样做因为:·委员会的成员累了(对于某些成员来说,工作了10年),想去做其它事情·社团还没有理解新的特征·许多实现者还不支持新的特征、库和工具·没有让委员们或社团感到紧急的新的伟大的想法。·对于许多成员,用于标准的资源(时间和金钱)太少·许多成员(包括我)认为I

2008-03-29 16:58:00 2293

翻译 立足现实 与时俱进:C++ 1991-2006 partIV

1、   语言特征:1991-1998到1991年,用于C++98的最重要的语言特征已经被接纳:在ARM中详细描述的模板和异常已经正式成为语言的一部分。然而,对它们的详细规范持续了好几年。除此之外,委员会还在许多新的特征上进行工作,比如:1992              协变返回类型(参见标准10.3.5)—对ARM中描述的特征的第一个扩展1993      运行时类型标识(RTTI

2008-03-29 16:55:00 973

翻译 立足现实 与时俱进:C++ 1991-2006 partIII

4、   标准库:1991-1998在1991年之后,C++标准的草稿中的最大改变是标准库。尽管我们做对标准文档做了非常多的细小的改进,与之相比较,语言特征只有很少的改变。为获得这样的观点,注意到标准总共有718页:310页定义了语言,366页定义了标准库。其它的就是附录等。另外,C++标准库通过引用包含C标准库,那是另外的81页。参考手册TC++PL2[118]作为标准化的基本文档,包含15

2008-03-29 16:53:00 1103

翻译 立足现实 与时俱进:C++ 1991-2006 partII

 3、   1991时的C++世界在1991年,我的《C++程序设计语言》第二版出版,作为对1989年定义的《C++注解参考手册》(“ARM”)[35]的补充。这两本书设置了C++编译器的标准并且从某种程度上说设置了多年后的编程技术的标准。因此,1991被认为是C++为进入主流所做的准备的最后阶段。从那时起,团结就是主要问题,那一年,有5个编译器可供选择(AT&T,Borland,GNU,

2008-03-29 16:51:00 899

翻译 立足现实 与时俱进:C++ 1991-2006

 论文太长,拆成六部分贴上来立足现实 与时俱进:C++ 1991-2006摘要本文概述C++程序语言的历史,从早期的ISO标准化(1991)到1998年成为ISO标准,到稍后的C++0x标准修正版本(2006)。重点在于阐述理想、约束、编程技术和那些塑造语言的人们,而不是语言特征的细节方面。其中主要的主题有泛型编程和STL(C++标准库的算法和容器)。特定的主题包括模板分离编译、异常处

2008-03-29 16:46:00 949

原创 C与C++的const

 const,即constant,字面上即是常量。const是C++的关键字,在C99中,const也是关键字,但二者对const的定义却不相同区别1:在C++中,const用于修饰对象、成员函数;当修饰对象时,表示该对象是常量,是不可修改的,不可修改意味着只能读,不能写;修饰成员函数时,表明该成员函数不会改变类中的成员数据,可为const/non-const对象所调用,但non-const对象只

2008-03-25 11:58:00 736

原创 多进程多线程环境下的同步机制性能测试

进行多进程、多线程编程时,难免会涉及到对同一块数据的访问,这时候我们需要使用各种锁来保证数据操作的正确性。正如《UNP》卷二所讲的一样,用于同步的锁主要分为两种:一、用于进程间同步的,有记录锁(record lock,对应于fcntl,还有flock,lockf等);有信号量(system V semaphore, posix semaphore);二、用于线程间同步的,有读写锁(pthread_

2008-03-25 11:29:00 2327

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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