1.写驱动时候底层时一定要注意compiler对你代码的优化,因为一般底层代码对写内存外围设备都有先后次序的要求。如果compiler对你某一条读写指令提前了,那会发生让你捉摸不透的错误。
2.对于内存拷贝,尽量按机器字长来拷贝。
3.并发程序切勿在 event函数中调用系统函数。因为很多系统函数内部都有锁,这及有可能导致死锁。比如在malloc过程中,收到signal,在signal处理函数中是千万不能调用malloc!这样会导致死锁。
4.不少系统库都是线程安全的,所以浪费比较严重。对于效率要求高的地方,可以重写这些函数。可以写自己的内存分配函数以及尝试无锁编程(lock-free)。
5.omparison is always false due to limited range. 编译器的自动优化问题。这个错误来自类型提升
char a='a';
if( 0xfe==a){//永远为假,会被编译自动优化掉
}
else{
}