Welcome 微信登录

首页 / 软件开发 / C++

如何让程序自动管理线程

如何让程序自动管理线程

如何让程序自动管理线程2010-08-15赵明引言多线程是一种很好的程序机制,使用线程可以充分的利用电脑资 源,进行并行的业务处理。不过好的东西总有它的不足。线程是好,不过滥用, 或管理不当就会造成线程混乱,内存漏洞,造成电脑速度变慢,反应迟钝。想法于是有人提出能不能让线程自己管理自己,把这复杂的工作 交给电脑来处理。笔者经过多年的实践,终于用VC++实现了这一目的。大家知道在VC++中我们可以用CreateThread创建一个线程,该函数返回这线程 的H...
Thunk技术的一个改进

Thunk技术的一个改进

Thunk技术的一个改进2010-08-15 vckbase 南风Thunk技术,一般认为是在程序中直接构造出可执行代码的技术(在正常情况 下,这是编译器的任务)。《深度探索C++对象模型》中对这个词的来源有过考证 (在中文版的162页),说thunk是knuth的倒拼字。knuth就是大名鼎鼎的计算机经 典名著《The Art of Computer Programming》的作者,该书被程序员们称为 “圣经”,与牛顿的&ldqu...
C++箴言:绝不重定义继承的非虚拟函数

C++箴言:绝不重定义继承的非虚拟函数

C++箴言:绝不重定义继承的非虚拟函数2008-01-05假设我告诉你 class(类)D 从 class(类)B publicly derived(公有继承),而且在 class(类)B 中定义了一个 public member function(公有成员函数)mf。mf 的参数和返回值类型是无关紧要的,所以我们就假设它们都是 void。换句话说,我的意思是:class B { public: void mf(); ...};class D: pub...
清理VC工程

清理VC工程

清理VC工程2010-08-15郑元林一、问题的提出在学习Visual C++的时候,会建立一个又一个的工程,这么多的工程,除 了管理上的问题之外,就是要占用大量的磁盘空间,而实际有用的东西并不大。 如果VC工程较长的时间不用,而又必须保留,那么清除其中无用的东西就势在必 行。在VC工程中,我们可以把工程目录下面的*.ncb、*.opt、*.plg文件删除是不 会影响工程的完整性,另外还有比较大的就是debug和release两个文件夹,也可 以删除。二、...
C++对象布局及多态实现之带虚函数的类

C++对象布局及多态实现之带虚函数的类

C++对象布局及多态实现之带虚函数的类2008-01-05如果类中存在虚函数时,情况会怎样呢?我们知道当一个类中有虚函数时,编译器会为该类产生一个虚函数表,并在它的每一个对象中插入一个指向该虚函数表的指针,通常这个指针是插在对象的起始位置。所谓的虚函数表实际就是一个指针数组,其中的指针指向真正的函数起始地址。我们来验证一下,定义一个无成员变量的类C040,内含一个虚函数。struct C040{ virtual void foo() {}};运行如下代码打...
探讨性能测试中的计时问题

探讨性能测试中的计时问题

探讨性能测试中的计时问题2010-08-15 vckbase 龚勋在系统测试时,尤其在需要测试算法或者某些模块的运行时间时,往往需要调 用一些时间函数库(如VC中的timeGetTime等可以获取毫秒级的时间),在待测试 的模块前后分别测试时间,然后,计算前后两个时间的差值,就得到模块的运行 时间,如图 1。图 1 一个典型的模块计时方法但是,使用原始的计时函数直接进行时间测试 在很多复杂情况下不方便,如图 1,当在一个模块中有多个子模块需要分别计时 ,所...
VC6绘制3D饼状图

VC6绘制3D饼状图

VC6绘制3D饼状图2010-08-15 vckbase 陈长江工作中需要使用到饼状图,在网上找了半天,也没有找到那种漂亮的3D饼状图 的代码,都是2D的,不喜欢。 无意间,看到有人用.net实现的3D饼状图,得到启 发,干脆自己做一个吧。其实很简单,就是用Pie扇形函数分别画出两个相同的、上下间距的分割圆。 但是,仅仅这样还不够,你看:(图一)图中方框的部分都是需要修正的。原文的作者是如图二这样修正的:(图二)但是,作者也说了,在饼图比较厚或者分割比较多...
C++箴言:谨慎使用私有继承

C++箴言:谨慎使用私有继承

C++箴言:谨慎使用私有继承2008-01-05在《C++箴言:确保公开继承模拟“is-a”》一文中论述了 C++ 将 public inheritance(公有继承)视为一个 is-a 关系。当给定一个 hierarchy(继承体系),其中有一个 class Student 从一个 class Person 公有继承,当为一个函数调用的成功而有必要时,需要将 Students 隐式转型为 Persons,它通过向编译器展示来做到这...
实时语音通信的实现

实时语音通信的实现

实时语音通信的实现2010-08-15孔康引言本人虽已学习VC++一年半载,仍觉捉襟见肘,好在有VCKBASE的帮忙,确实学 到了不少东西,www.vckbase.com也成了我每次上民网必到之处(阁下有所不知, 鄙人接受最为严格的管理,上民网是要申请的)。近日在做一个通信 方面的程序 ,实时的语音和视频通信当然是大家所喜欢的。本文将向您展示局域网环境下实 时语音通信的的一个解决方案(视频这一块正在做,估计很快就能出炉),Winxp环 境下测试效果良好,并...
C++对象布局及多态实现之成员函数的调用

C++对象布局及多态实现之成员函数的调用

C++对象布局及多态实现之成员函数的调用2008-01-05 vchelp 潘凯从这部分开始我们除了利用内存的信息打印来进行探索外,更多的会通过跟踪和观察编译器产生的汇编代码来理解编译器对这些语言特性的实现方式。汇编方面知识的讨论超出了本文的范围,我只对和我们讨论相关的汇编代码进行解析。理解本文要讨论的知识并不需要有很完整的汇编知识,但必须了解起码的概念。下面我们看看引入虚继承后的影响。为了有所对比我们首先看看普通成员函数的调用情况。执行如下代码,它包括了...
VC实现自绘图形输出到bmp文件

VC实现自绘图形输出到bmp文件

VC实现自绘图形输出到bmp文件2010-08-15江上飞鸟在用vc做程序时候,经常需要把输出的文本和图形保存到位图文件,当然可以 有现成的控件来实现,但总不能如自己所愿,还是自己动手写吧!如下图:一、实现方法要把文本和图形保存到位图文件,只要对掌握位图结构有一定的了解,一切都 ok呢。先必须要创建内存设备环境,然后内存设备环境创建的DIB区域,别忘了还 要创建个CBitmap对象,CBitmap对象必须和DIB区域关联起来,把CBitmap对象选 择到当...
C++箴言:谨慎使用多继承

C++箴言:谨慎使用多继承

C++箴言:谨慎使用多继承2008-01-05触及 multiple inheritance (MI)(多继承)的时候,C++ 社区就会鲜明地分裂为两个基本的阵营。一个阵营认为如果 single inheritance (SI)(单继承)是有好处的,multiple inheritance(多继承)一定更有好处。另一个阵营认为 single inheritance(单继承)有好处,但是多继承引起的麻烦使它得不偿失。在本文中,我们的主要目的是理解在 MI 问...
汉诺塔游戏的设计

汉诺塔游戏的设计

汉诺塔游戏的设计2010-08-15 vckbase 苍竹先生汉诺塔问题是最经典的递归问题,笔者就该问题设计了这个游戏,由用户交互 游戏和自动演示两部分组成,支持撤销功能、选关、自动完成等功能。首先 建立了类CMap,该类主要实现用户每一步的操作和画图显示功能,记录的时候只 须记录每组盘子的个数和盘子的矩形。代码和注释如下://记录 每一步的盘子的情况class CMap{public: //每组 盘子的个数 int iCount[3]; //3组盘...
C++程序设计从零开始之语句

C++程序设计从零开始之语句

C++程序设计从零开始之语句2008-01-05前面已经说过程序就是方法的描述,而方法的描述无外乎就是动作加动作的宾语,而这里的动作在C++中就是通过语句来表现的,而动作的宾语,也就是能够被操作的资源,但非常可惜地C++语言本身只支持一种资源——内存。由于电脑实际可以操作不止内存这一种资源,导致C++语言实际并不能作为底层硬件程序的编写语言(即使是C语言也不能),不过各编译器厂商都提供了自己的嵌入式汇编语句功能(也可能没提供或提供其...
Brew后台应用开发

Brew后台应用开发

Brew后台应用开发2010-08-15牛阿牛Overview 概述Brew应用程序可以分为3类:激活的,挂起的和后台的 ;激活或挂起的应用程序驻留在应用程序栈里,这个栈是brew用来管理正在执行 的应用的。栈中最上面(top)的是激活的应用程序,只有它才能直接与用户通过屏 幕更换或者用户事件来交互信息;挂起应用某种程度上位于当前激活应用的栈下 面 。由于可能有多个应用处于挂起状态,开发者应该尽量保证挂起程序 所占资源最小化。栈中的应用可以通过suspen...
<< 61 62 63 64 65 66 67 68 69 70 >>