上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 59 下一页
  2013年1月17日
摘要: 4、Linux多线程,线程同步(2)2)条件变量(cond) 利用线程间共享的全局变量进行同步的一种机制。条件变量上的基本操作有:触发条件(当条件变为true时);等待条件,挂起线程直到其他线程触发条件。int pthread_cond_init(pthread_cond_t *cond,pthread_condattr_t *cond_attr);int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);int pthread_cond_timewait(pthread_cond_t *cond,pthread_mu 阅读全文
posted @ 2013-01-17 13:48 一个人的天空@ 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 3、Linux多线程,线程同步5)线程私有数据进程内的所有线程共享进程的数据空间,因此全局变量为所有线程所共有。但有时线程也需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Date)TSD来解决。在线程内部,私有数据可以被各个函数访问,但对其他线程是屏蔽的。例如我们常见的变量errno,它返回标准的出错信息。它显然不能是一个局部变量,几乎每个函数都应该可以调用它;但它又不能是一个全局变量,否则在A线程里输出的很可能是B线程的出错信息。要实现诸如此类的变量,我们就必须使用线程数据。我们为每个线程数据创建一个键,它和这个键相关联,在各个线程里,都使用这个键来指代线 阅读全文
posted @ 2013-01-17 13:29 一个人的天空@ 阅读(298) 评论(0) 推荐(0) 编辑
摘要: (2)线程的分离与结合在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了线程的默认属性,即为非分离状态(即可结合的,joinable,需要回收),这种情况下,原有的线程等待创建的线程结束;只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而分离 阅读全文
posted @ 2013-01-17 12:04 一个人的天空@ 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 说明:以下内容,根据参考中【1~6】内容整理而得。一、基本概念1、线程是计算机中独立运行的最小单位。进程是分配资源的单位。2、为什么使用多线程?(1)启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,总的说来,一个进程的开销大约是一个线程开销的30倍左右。(2)使用多线程的理由之二是线程间方便 阅读全文
posted @ 2013-01-17 11:50 一个人的天空@ 阅读(207) 评论(0) 推荐(0) 编辑
  2013年1月15日
摘要: 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创建型模式,大致可以分为三类,简单工厂模式、工厂方法模式、抽象工厂模式。听上去差不多,都是工厂模式。下面一个个介绍,首先介绍简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要.. 阅读全文
posted @ 2013-01-15 23:09 一个人的天空@ 阅读(224) 评论(0) 推荐(0) 编辑
  2013年1月12日
摘要: 引言 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写 一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要紧待看完本文后你就会理解了。正文 虚基类 在说明其作用前先看一段代码classA{public:intiValue;};classB:publicA{public:voidbPrintf(){cout<<"ThisisclassB"<<endl;};};classC:publicA{public:voidcPrintf(){cout&l 阅读全文
posted @ 2013-01-12 00:17 一个人的天空@ 阅读(5055) 评论(0) 推荐(1) 编辑
摘要: 虚函数:目的:为了引起晚绑定实现方法:在声明函数时使用virtual关键字纯虚函数:目的:提供抽象的接口实现方法:virtual int foo()=0;特点:如果一个类中包含纯虚函数,则该类的VTABLE是不完整的,故而无法生成该类的对象。这样的类称为纯抽象基类纯抽象基类,也称为纯虚类:目的:提供抽象的接口实现方法:包含纯虚函数特点:不能生成该类的对象虚基类:目的:为了消除二义性实现方法:virtual继承特点:一个类既可以作为某个类的虚基类,也可以作为另一个类的非虚基类。 阅读全文
posted @ 2013-01-12 00:16 一个人的天空@ 阅读(409) 评论(0) 推荐(1) 编辑
摘要: 虚函数的应用特性例:编写三个类:没有虚函数、有一个虚函数、有两个虚函数,在主函数中定义这三个类的对象,分别取这个类所占的内存空间的大小,观察在内存中的分配; 代码如下:/**//*************************************************************************虚函数的应用特性例子************************************************************************/#include<iostream.h>//没有虚函数的类classCNoVirtual...{i 阅读全文
posted @ 2013-01-12 00:15 一个人的天空@ 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 纯虚类有以下特征:含有一个纯虚函数的类,叫做纯虚类。纯虚类不可以定义对象。我个人觉得这个说法应该就是把纯虚类的主要特点说明了:1、只要有一个纯虚函数。就称为纯虚类。所以如果子类没有实现纯虚函数,相当子类也有纯虚函数,所以子类也是纯虚类。2、其他类的定义与使用方式都与一般的类差不多。大致有如下地方:纯虚类可以有成员变量 (可以)纯虚类可以有普通的成员函数(可以)纯虚类可不可以有其他虚函数(可以)纯虚类可不可以又带有参数的构造函数? (可以)可不可以在纯虚类的派生类的构造函数中显式调用纯虚类的带参数构造函数(可以)3、使用方式上:不可以定义一个对象。下面是另外一篇文章中说的说法:(纯虚类也称为抽象 阅读全文
posted @ 2013-01-12 00:15 一个人的天空@ 阅读(2537) 评论(0) 推荐(0) 编辑
摘要: 虚基类的作用当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:classCBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1,CDerive2{ };则在类CDerive12的对象中,仅有类CBase的一个对象数据虚基类的特点: 虚基类构造函数的参数必须由最新派生出来的类负责初始化(即使不是直接继承); 虚基类的构造函数先于非虚基类的构造函数执行。重写“C+ 阅读全文
posted @ 2013-01-12 00:14 一个人的天空@ 阅读(530) 评论(0) 推荐(0) 编辑
  2013年1月10日
摘要: Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。关于这个东西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析,加深对memcached的使用方式理解。本文的部分内容可能需要比较好的数学基础作为辅助。◎Memcached是什么在阐述这个问题之前,我们首先要清楚它“不是什么”。很多人把它当作和SharedMemory那种形式的存储载体来使用,虽然 阅读全文
posted @ 2013-01-10 11:49 一个人的天空@ 阅读(263) 评论(0) 推荐(0) 编辑
  2013年1月7日
摘要: MySQL query cache从4.1版本开始提供了,不过值今天本人才对其进行研究。默认配置下,MySQL的该功能是没有启动的,可能你通过show variables like '%query_cache%';会发现其变量have_query_cache的值是yes,MYSQL初学者很容易以为这个参数为YES就代表开启了查询缓存,实际上是不对的,该参数表示当前版本的MYSQL是否支持Query Cache,实际上是否开启查询缓存是看另外一个参数的值:query_cache_size ,该值为0,表示禁用query cache,而默认配置正是配置为0。配置方法:在MYSQL的 阅读全文
posted @ 2013-01-07 09:32 一个人的天空@ 阅读(219) 评论(0) 推荐(0) 编辑
  2013年1月4日
摘要: iostatiostat用于输出CPU和磁盘I/O相关的统计信息.命令格式:iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ]1)iostat的 简单使用iostat可以显示CPU和I/O系统的负载情况及分区状态信息.直接执行iostat可以显示下面内容:# iostatLinux 2.6.9-8.11.EVAL (ts3-150.ts.cn.tlan) 08/08/2007a... 阅读全文
posted @ 2013-01-04 14:05 一个人的天空@ 阅读(7811) 评论(0) 推荐(0) 编辑
  2012年12月29日
摘要: 在centos下安装了mongodb,使用SecureCRT连接centos后,使用mongo来操作mongodb,在shell使用退格键时出现乱七八糟的字符,造成这个问题原因跟SecureCRT配置有关,修改设置为:选项 –> 会话选项–> 终端–> 仿真–> 终端中选择linux 即可。详细如下图:欢迎转载,转载请注明文章出处,谢谢! 阅读全文
posted @ 2012-12-29 15:14 一个人的天空@ 阅读(940) 评论(0) 推荐(0) 编辑
摘要: MongoDB,现在开源社区里越来越受到关注的一个NoSQL产品,按照官方的说法,是一个可扩展的、高性能的、开源的、面向文档的数据库。Craigslist、foursquare、国内的淘宝网等知名互联网公司都有在他们的生产环境部署了MongoDB。一、MongoDB简介 mongodb是用C++开发的面向文档的数据库,也就是反传统的数据库范式来设计的,把相关的对象都记录到一个文档里,每个文档内是schema-free的,也就是列名可以自由定义,比较灵活,特别是面对业务逻辑多变的应用场景十分给力。数据以BSON(类似JSON)的格式二进制存储。不好的地方就是可能带来一定的数据冗余和存储开销。 . 阅读全文
posted @ 2012-12-29 14:51 一个人的天空@ 阅读(3520) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 59 下一页