写给c/c++的新同行门
越界是最难查的,注意memcpy strcpy,strncpy这些函数使用前一定要检查边界
特别是你提供函数给别人用时,你的函数中用到了这些东西,一定要检查别人传给你的指针的
边界
2、变量初始化
这种问题要养成好习惯,否则出来偶然性问题,非常难查
3、多线程指针管理
在多线程环境下使用指针时,最好采用引用计数,让最后一个放充引用计数时,指针删除,避免一个线程在使用指针,另外线程删除掉
4、多线程锁的管理
多线程锁要粒度要适中,尽量减少 一个函数 进入多个锁,避免一个大函数一个大锁影响性能,可学习数据库的表级,行级锁
尽量不要在回调函数中放锁,易 引起死锁
做到线程安全函数单向调用,上层往下层调用,下屋向上层采用事件驱动反馈,避免调用栈
过深,易引起死锁
,
5、多线程对象生存期管理
尽量当多线程共享对象 尽量不要直接删除,建议采用状态机形式来管理,其它线程设置状态
由一个线程统一按状态管理生存期
6、构造函数
函造函数中不要放虚函数,绝对不要在构造函数中开线程,并且线程调用自己的成员
7、内联
虚函数不要内联
8、多线程创建办法
如果用C运行库函数,要注意用C运行库的方法
9,内存管理
建议采用内存池管理
10、线程生存期管理
线程中尽量不要调用同步函数,不要强行杀线程,要让线程不断循环,等待死亡信号自己退出
相关文档:
当要建立线程等时,在Linux下,用文本编辑,在键入“g++ -lpthread”.......“可以把库pthread引入”,编译通过。现在想用eclipse,但是默认情况下,引入不了pthread。会报“undefined reference to phread_create”等错误。
解决方法:可以在project中好到properties
在里面的&ldquo ......
http://www.gamedev.net/reference/programming/features/orgfiles/page2.asp
通过四个pitfall讲解头文件的由来和好处,以及使用头文件定义inline func and template.
Remember that, as far as the compiler is concerned, there is absolutely no difference between a header file and a source file.
The key idea ......
ARM C嵌入式编程中的几个关键字
1、访问绝对地址的内存位置:
#define pISR_EINT0 (*(unsigned *) (_ISR_STRATADDRESS+0x74))
上述语句把无符号整数_ISR_STRATADDRESS+0x74强制转换为指针,指向RAM,用下面的语句可以访问它:
pISR_EINT0 = (int)Eint0_ISR
& ......
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。
&nb ......