上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 60 下一页

2011年10月29日

摘要: 在多道程序系统中,同时有多个进程并发运行,共享系统资源,从而提高了系统资源利用率,提高了系统的处理能力。但是,若对资源的管理、分配和使用不当,则会产生死锁或是饥饿。所谓死锁是指在多道程序系统中,一组进程中的每一个进程军无限期等待被该组进程中的另一个进程所占有且永远不会释放的资源。饥饿是指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿。当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。下面我们就来分别讨论一下死锁与饥饿各自的特点。首先是死锁。产生死锁的原因主要有两个,一是竞争资源,系统提供的资源数 阅读全文
posted @ 2011-10-29 15:12 Hibernate4 阅读(439) 评论(0) 推荐(0) 编辑
摘要: Detours是微软开发的一个函数库,可用于捕获系统API。在用其进行程序开发之前,得做一些准备工作:一.下载Detours 在http://research.microsoft.com/sn/detours可免费下载Detours二.安装Detours 一路NEXT三.生成Detours库 在安装后的文件夹下找不到直接可以拿来用的LIB文件,但是却有SRC文件(在**\Microsoft Research\Detours Express 2.1\src下)。该文件夹下还有Makefile,可以直接用来生成库。 将Detours路径下的SCR文件夹拷贝到**\Microsof... 阅读全文
posted @ 2011-10-29 15:00 Hibernate4 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 1 字符测试函数 1> 函数原型均为int isxxxx(int) 2> 参数为int, 任何实参均被提升成整型 3> 只能正确处理处于[0, 127]之间的值 2 字符映射函数 1> 函数原型为int toxxxx(int) 2> 对参数进行检测, 若符合范围则转换, 否则不变 int tolower(int); 'A'~'Z' ==> 'a'~'z' int toupper(int); 'a'~'z' ==> 'A'~'Z' 阅读全文
posted @ 2011-10-29 14:53 Hibernate4 阅读(718) 评论(0) 推荐(2) 编辑
摘要: 导读:从本篇文章开始,将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型。主人公阿愚将在这里与大家分享SEH( 结构化异常处理)的学习过程和经验总结。 深入理解请参阅<<windows 核心编程>>第23, 24章.SEH实际包含两个主要功能:结束处理(termination handling)和异常处理(exception handling)每当你建立一个try块,它必须跟随一个finally块或一个except块。一个try 块之后不能既有finally块又有except块 阅读全文
posted @ 2011-10-29 14:52 Hibernate4 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 指向类成员的指针,印象中似乎很少用到,重新学习C++的过程中,才发现自己是忽视了一个很重要的东东,以前我一直认为类的成员函数不能作为回调函数,所以很多C程序都始终无法移植到C++上来,现在才知道,这是对指向类成员的指针不了解的缘故。 1、指向非静态成员的指针 其实指向非静态的类成员的指针很容易,它们与普通指针唯一的区别是,他们受类的限制。如下: class A { int _val; int val(); }; int (A::*p_val) = &A::_val; int ( A::*p_func )() = &A::val; 看到了吗,是的,和普通的指针的区别是,指... 阅读全文
posted @ 2011-10-29 14:50 Hibernate4 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。可重入函数简介 也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈. 阅读全文
posted @ 2011-10-29 14:48 Hibernate4 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 1 volatile有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值,如下: volatile BOOL bStop = FALSE;在一个线程中: while( !bStop ) { ... } bStop = FALSE; return;在另外一个 阅读全文
posted @ 2011-10-29 14:45 Hibernate4 阅读(319) 评论(0) 推荐(0) 编辑
摘要: mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。他只能用于类的非静态和非常量数据成员 我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化! 如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员进行赋值.这个时候就需要用到mutable关键字了 .. 阅读全文
posted @ 2011-10-29 14:44 Hibernate4 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 自从1993年Bjarne Stroustrup 〔注1 〕提出有关C++ 的RTTI功能之建议﹐以及C++的异常处理(exception handling)需要RTTI;最近新推出的C++ 或多或少已提供RTTI。 然而,若不小心使用RTTI,可能会导致软件弹性的降低。本文将介绍RTTI的观念和近况﹐并说明如何善用它。什么是RTTI? 在C++ 环境中﹐头文件(header file) 含有类之定义(class definition)亦即包含有关类的结构资料(representational information)。但是﹐这些资料只供编译器(compiler)使用﹐编译完毕后并未留下来﹐. 阅读全文
posted @ 2011-10-29 14:41 Hibernate4 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 3.1 private的虚函数 考虑下面的例子:class A{public:void foo() { bar();}private:virtual void bar() { ...}};class B: public A{private:virtual void bar() { ...}}; 在这个例子中,虽然bar()在A类中是private的,但是仍然可以出现在派生类中,并仍然可以与public或者protected的虚函数一样产生多态的效果。并不会因为它是private的,就发生A::foo()不能访问B::bar()的情况,也不会发生B::bar()对A::bar()的overr.. 阅读全文
posted @ 2011-10-29 14:39 Hibernate4 阅读(560) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 60 下一页

导航