先前写过一个程序,多线程保护的很好,运行也很稳定,却发现效率非常低。这让我觉得很郁闷。忽然发现世界上的事情往往如此,不过就是稳定和效率的博弈。改了版本后,取消了很多同步的操作,却发现稳定性降低了很多,同样是很郁闷。
前段时间看《Modern C++ Design》,提到的类锁和对象锁的概念,这里面需要注意以下,我用到的一个全局管理对象,它的锁其实就是一个类锁,过多的使用类锁,会发现效率回降到非常低的程度,而对象锁可以稍微好一些,但二者的运用之处决对不同。顺带提一句,《Modern C++ Design》提到了计算机CPU的指令优化,可能带来锁的实效。X86应该不用考虑到这个问题吧。
今天的一点点心得:先申请资源,再记录,使用资源,清除资源,删除记录,会收资源。这个顺序绝对不能错。如果可以做到这一点,可以减少锁的使用。