多任务编程常见问题
捺捺 2007-12-25 05:19:46 • 数据竞争
– 对共享数据没有使用锁保护
– 将一组有联系的共享数据的操作单独划分到一
个模块里
• 死锁
– 遗漏解锁操作(使用内存测试方法进行检测)
– 嵌套锁解锁顺序错误(尽量避免使用嵌套锁)
– 递归锁等
数据操作时序
– 发生于两次加锁解锁之间任务进行了切换
– 问题的出现是随机性的,有些问题出现概率很
小,很难定位
– 一般使用代码静态分析方法来发现这类问题
– 使用原子操作时最容易犯这个问题,这也是无
锁编程的困难所在
其他一些问题
– 锁资源回收问题
– 优先级翻转问题
– 任务挂起或死亡问题