理解和使用是两码事
第一个错误是关于stl的,写程序的过程中,总是期望用最小的代价获得最大的收益,
效率低下的代码是不能忍受的,但有时容易陷入极端,这个问题根源在于迭代器
失效, 为了一个锁,以为安全的,没有注意到。还有一个问题,deque的所以插入和
删除操作都会导致迭代器失效。
第二个问题是关于死锁的,写了几年的代码第一次遇到这个问题,就像刚工作的时候专家(老大)
问我,有没有遇到比较严重的内存错误,当时傻乎乎说没有。问题是客观存在的,没有的原因在于
系统没有那么复杂。前段时间刚刚调试了内存泄露的问题,重载了operate new操作符,调试了每一个
模块,没有发现问题,于是把目光转向了stl,终于发现一个无效的内存,导致vector不停的push。
这次死锁,在于想在信号量唤醒之后保存一个状态,这个状态记录了唤醒的来源,于是内部加了一个锁,
导致了死锁。解决完这个问题后一阵后怕,感觉能够快速解决,根本原因在于一直坚守的完善的log记录,
最初工作的时候总是喜欢debug调试,在代码比较少业务简单的情况下或许可以,但在系统复杂的情况
下就没那么有效了,log是定位逻辑错误的最有效的手段,前提是打的有技巧。
目前实现的模块是基于一系列的目标,制定时间,添加时间段,推到执行模块按序执行的一种机制。