- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 缓冲区设计—进程间通讯(POSIX 共享内存)
在《缓冲区设计-线程间通讯》一文中,完成了BufQueue的模版类的设计。这个模版类定义如下:template >class BufQueue; 其中的模版参数Alloc可以订制为不同的环冲内存形式。在线程间的通讯中,这个参数当然是最简单的,它只要简单的分配空间就可以了,因为同一进程中的线程是共享进程的内存空间的。 但是,如果要在进程间使用这个环形缓冲区,则需要
2009-08-30 22:42:00
2919
原创 缓冲区设计—线程间通讯(C语言程序实现)
有没有接触过C++的朋友看到上篇文章,希望给出C程序的实现。匆忙之中没有以通用的的函数形式给出,而是将缓冲区代码与测试代码混合一个源程序,程序也写得丑陋了一些,仅供朋友们学习实现的原理。程序在linux 环境下已测试通过。 # include # include # include # include #
2009-08-10 14:11:00
3995
2
原创 缓冲区设计—线程间通讯
书接上回。 上一篇里,我们设计并实现了环形队列的数据结构。同时留下了下面的更具复杂性的问题: 对于push的操作,需要操作前等待队列已经有了空间,也就是说队列没有满的状态。等到这个状态出现了,才继续进行push的操作,否则,push操作挂起。 对于get 的操作,需要操作前等待队列有了数据,也就是说队列不为空的状态。等到这个状态出现了,才继续进行get的操作,否则,ge
2009-08-10 00:18:00
4487
原创 缓冲区设计--环形队列
在程序的两个模块间进行通讯的时候,缓冲区成为一个经常使用的机制。 如上图,写入模块将信息写入缓冲区中,读出模块将信息读出缓冲区。这样使得:将程序清晰地划分模块,建立良好的模块化架构,使得写入和读出成为高聚合,低耦合的模块。对于写入和读出的处理可能产生的快慢不均匀的情况进行平衡,使得整个处理的速度趋于平滑的均匀状态
2009-08-07 01:56:00
22870
9
原创 控制C++中cout及print输出的评论和回答
论坛的lhslktg朋友发了一个贴,大意是说在他的程序里面调用了很多的cout的输出,是否能够使用最快速的方法,使得程序的输出能够定向到一个文件内。我理解这个所谓的快速的方法,就是尽量不要改动原有的程序,至少不要改动程序的内部,而达到这个功能。有朋友给了一个最好的办法,就是命令输出重定位。假如,应用程序的名称为: testcmd,则可以使用下面的命令:testcmd >test
2009-07-30 00:05:00
15281
3
原创 关于C语言12个问题的回复
关于C语言12个问题,我在帖子上回答了部分朋友。现在又看到了一些朋友的评论,在此一起答复。阅论坛内容点击此 [Quote=引用 15 楼 heguodong 的回复:]8. if ( ch == 1 ) { .......... } if ( ch == 2 ) { ........... } if ( ch == 3 )
2009-07-19 16:11:00
1569
1
原创 12个C语言的程序问题
下面的12个C语言的语句是我从实际的应用系统中摘录和简化来的。这些语句都被我列入丑陋代码的类别中。对此,我给出了相应的改善程序和说明。1.if ( strlen(s) == 0 ) if ( strlen(s) )if ( strcmp(s, “”) == 0 )改善:# define isNotEmpeyStr(s) ( (s)[0] != ‘/0’ )# d
2009-07-15 20:28:00
3082
16
原创 C语言中字符串转换浮点数的问题
在C语言的标准库中,提供了atof,strtod等将字符串转换为double类型的函数。 假设 char *str为一个需要转换的字串,则我们可以这样使用: double dval; dval = atof(str); dval = strtod(str, 0); 我们还可以使用 sscanf来进行装换: sscanf(str, “%lf”, &dval); 但
2009-07-15 20:11:00
14815
1
原创 一个C程序的数据类型对齐问题
在应用中,常常有这种情况:在一片内存区内,有一个头的纪录,然后紧接着存放详情纪录。例如: typedef struct { short num; short flag;} Head; typedef struct { short index; double value;} Detail; 假设
2009-07-06 20:13:00
1209
原创 改善一个劣质的C++代码
在C++论坛里发了一个与本文题目相同的贴子如下:下面是一个我在一个应用系统中发现的我认为很丑陋的一段C++代码.显然,代码的意图是将string中的内容变成相应的小写字母.请大家指出它的问题之所在,并给出改善后的代码.我自已已经有了一个答案,只用一条语句就能实现这个功能.待两日后我给出我的答案.但然,也许你的答案比我的更好. void IniReader::string_lower
2009-07-03 22:26:00
1367
原创 Properties --- C++读配置信息的类(三)
本篇在前两篇的基础上,进一步给出XML格式文件装载的Properties类的实现。如前所述,正是因为我们将Properties设计成为一个模版类,使得装载的过程和方式称为模版的参数,使得Properties成为一个可以适应装载不同方式和格式的配置文件信息的实用类。在前一篇,我们实现了ini文件格式的装载。本篇我们来实现xml格式的装载。首先来说明一下我们规定的xml的格式。下面是一个实际的xm
2009-07-02 21:10:00
1635
原创 Properties --- C++读配置信息的类(二)
在第一部分中,列出了Properties的定义的头文件。这个文件中的load及loadXML接口参数是一样的。当初设计这个类的时候,主要是读ini格式的文件,后来又有了读XML格式文件的需求,才增加了loadXML的函数。这样以增加函数接口来扩展功能的方式显得比较丑陋,同时也说明,Properties的设计不能满足于读不同文件格式的需要。下面是针对这个问题,作出的重新的设计: 1
2009-06-30 22:38:00
3172
原创 Properties --- C++读配置信息的类(一)
在开发实践中,积累了一些通用的C++ 类库,在此写出来给大家分享。也希望能给出更好的建议。工具库的名字是xtl——Properties 类。分两部分介绍。这篇介绍类的定义。下一篇将介绍类的实现。 。这篇介绍其中的读配置文件的类 下面是类的定义的头文件: 1 2 /*xtl/Properties.h 3 Author: ZhangTao
2009-06-28 17:39:00
4097
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人