优秀的模式具有通用性,因为它本书就是经验、优点的提炼、升华。
线程同步最大的问题是死锁问题,而白痴级的死锁是加锁后忘了释放或由于某种未考虑到的条件发生而导致无法释放。
类的构造函数、析构函数机制与C++栈上变量的生存法则结合,给了C++程序员无线的遐想(在这个基础上衍生出来的种种技巧到底是天使还是恶魔,我不去多想)。
ATL里主流CriticalSection封装类有两个,一个自动加锁、解锁(在构造、析构函数里处理),一个需要手动处理(它是自动处理的基础),这两个累都需要使用外部同步策略。
ACE里有ACE_Guard和ACE_Thread_Mutex,ATL里使用了继承机制,ACE里使用了policy策略,但是两者手法、使用上一样(名字当然有差别)。
BTW,yaogl库里也使用了类似的东西。