1. 访问一个已被删除对象的成员
具体场景:pMagRoll指向一个变量,然后在程序中usleep(1000*pMsgRoll->speed)来控制显示的速度,但是
pMsgRoll是一个临界资源,会被其他线程修改,最后导致某个变量被删除以后导致速度变得不可控制。
解决方法:定义一个和临界变量无关的变量,用变量来保存我们要使用到的临界对象的属性,而不是直接使用
指针会的临界对象的属性值。
2. Qt的usleep()
Qt会封装每个系统平台的接口,并且还会提供自身实现的某些接口。QThread里面就有一个usleep()方法,在程序中,若果写成 usleep(1000),就会调用QThread里面的函数,要想调用系统提供的usleep,需要按照如下的格式:
::usleep(1000);
比如下面的代码:
就可以看出,QT是对不同平台的封装。摘自qthread.cpp源文件。
3.嵌入式平台上频繁读取某个文件导致速度降低
嵌入式平台由于资源有限,常常会使用SD卡来扩展系统的存储容量。但是,如果我们频繁的读取SD卡中的文件,可能会成为程序整个的瓶颈。
解决的方法是可以在/tmp下面创建文件,或者使用共享内存。