免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1060 | 回复: 0
打印 上一主题 下一主题

项目总结-锁和信号量 (原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-27 08:40 |只看该作者 |倒序浏览

通过十几天的努力,用多线程实现了生产者和消费者的经典问题,并且可以在pmc和se板子上运行(通过宏的切换,在Makefile中已经定义,由Makefile文件来控制生成不同平台的代码,并且我把接口部分做了一些处理,将T-Engine所提供的原生接口进行了有效的封装,使它的通用性更强,并且可读性和可维护性都有一定的提高),程序目前大体完成,不过仍然有许多不完善的地方.这段代码中我所总结的经验和教训如下:
1. 首先对T-Engine这个系统不是很了解。对Pmc和se板子下的接口不熟悉,有一些接口的参数不知道怎样设置,参数的作用理解的不够详细(有很多这样的错误,以后会多查资料,以便更加了解它们的接口和实现的原理)。
2. 对生产者和消费者这个概念理解不是非常透彻,导致有的地方思维混乱,不知道下步该做什么。(以后多读多理解别人的代码,再理解程序的思路后基础上再写代码)。
3. 头文件的使用,项目开发时的命名方式不是很清楚,以及注释,变量的命名,这些东西能够使程序更加清晰化,提高了移植性,便于以后的修改和维护。
4. Makefile的使用,通过这个程序,对于Makefile的使用有了一定的提高,对于里面的参数的使用,有了一定的认识。但是理解还不够深刻,有的地方还比较含糊。
5. 对于多线程以前就是有个概念上的理解。并没实际中用到过,这次用到了多线程的函数。并且用到了锁和信号量,(下面我说说我对锁和信号量的理解,锁是用来保护临界资源的,即某一时刻只有一个线程能够访问这个资源,当它访问之前先看看有没有其他的线程在用这把锁,如果没有被占用,它获取这把锁,然后做它的操作,这个时候其他的线程,是不能够访问的,必须等到那个线程做完操作以后释放锁的时候,其他的线程才能获得锁,进行后面的操作。信号量:很多平台用信号量的实现方式去模拟出锁的概念,我在往pmc下移植的时候也用到了这个方法,这是个很经典的方法,这也说明了,锁和信号量的作用很相似,容易混淆,这里面主要强调下它俩之间的区别,也是很重要的一点,就是信号量(也叫做信号灯)的资源数由创建它的用户来指定,当建立信号量的资源数置为1的时候,它可以模拟出锁的功能,我在做这个代码的时候,恰恰是用到了它的这个特点,实现了它的这个功能)通过这个程序的编写,对这部分的知识有了一定的掌握。
6. 对于静态申请的空间,尽量申请和所需要的空间相匹配,过大造成资源浪费,过小会导致缓冲区溢出,这种错误有时不好察觉。养成良好的习惯很重要。
7. 代码要尽量严谨,比如申请的内存,申请的锁,线程的申请等,要做到不需要的时候,及时把他们释放掉,以免造成资源的浪费和泄漏。
8. 对于问题的解决,出现错误的调试能力,分析错误的能力还有待提高。创造性思维不够。
9. Linux上编辑器的使用,一些基本的命令,还需要多多积累。
10.宏定义的作用和使用的规则,还有待提高。
以上几点是我通过这个程序所认识到自己的不足和欠缺,争取在做下个项目的时候能够少犯上述的错误,当然,通过这个项目收获还是很多。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20619/showart_1149671.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP