
C++篇
mengde007
偶要做高手!@已经忙了;
展开
-
多线程之volatile
现在进入了多核时代;程序也要发生一系列变化;比如说现在单纯的变量已经不再安全了;比如说一个int型别的数据,我们同时开了几个线程在跑。现在有了一个线程突然改变了该int变量,我们的意图是几个线程都要把这个变量反映出来;但是往往事与愿违。让我们来分下问题所在:int a;while(a){……}程序执行到该段时,首先要从内存里面读取到寄存器里面;然后程序从寄存器里面读取。这里就有了一个漏洞了。假设我们的编译器做了优化(在while循环那段),这样一来,就会导致我们的变量的变化不能及时反映出来;我们 的软件该做原创 2010-07-12 21:47:00 · 529 阅读 · 6 评论 -
C++之萃取技术
<br />自从C++中引入了template后,以泛型技术为中心的设计得到了长足的进步。STL就是这个阶段杰出的产物。STL的目标就是要把数据和算法分开,分别对其进行设计,之后通过一种名为iterator的东西,把这二者再粘接到一起。设计模式中,关于iterator的描述为:一种能够顺序访问容器中每个元素的方法,使用该方法不能暴露容器内部的表达方式。可以说,类型萃取技术就是为了要解决和iterator有关的问题的,下面,我们就来看看整个故事。<br /><br /><br /> <br /> <br />转载 2010-08-24 10:48:00 · 1093 阅读 · 0 评论 -
Heap Sort
<br />堆的定义: <br /> n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质):<br /> (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤)<br /> 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。<br /> <br /> 堆的这个性质使得可以迅速定位在原创 2010-08-28 21:32:00 · 388 阅读 · 0 评论 -
boost之shared_ptr,weak_ptr计数
今天我也对boost的shared_ptr和weak_ptr作个简单的介绍; 总所周知,boost给我们提供了方便的内存管理,不需要我们手动的释放内存,shared_ptr发挥了一个重大作用。而weak_ptr作为一个观察者,却对计数不理不睬。 看源码分析, 它们都有类似的原创 2011-08-22 23:45:13 · 2376 阅读 · 0 评论