我这里可以大概给你介绍一下但对于每一种编程模型要看具体的示例是什么而且我不可能给你罗列所有的代码请谅解 其实我们编程只要尽量站到比较高的层次很多道理其实你会发现你已经懂了 就多线程来说我们开始设想只有两个线程(>时是不是算数学归纳法?)那么如果两个独立的线程会发生什么呢? 当一个线程进入moniter(也就是说站用一个object)另一个线程只有等待或返回而我们把返回就称为一种模式这种模式的英文是Balking 这两个线程可以是有序的执行而不是让OS来调度这时我们要用一个object来调度这种模式称为Scheduler(这个词及其含义其实OS中就有) 如果这两个线程同时读一个资源我们可以让他们执行但如果同时写的话你闭着眼睛都会知道可能出现问题这时我们就要用另一种模式(Read/Write Lock) 如果一个线程是为另一个线程服务的话比如IE中负责数据传输的线程和界面显示的线程当一个图片没有传完时另一个线程就无法显示至少是部分没有传完那么这时我们要用一个模式称为生产者和消费者英文是ProducerConsumer 两个线程的消亡也可以不是完全又OS来控制的这时我们需要给出一个条件使得每个线程在符合条件是才消亡也就是有序的消亡我们称为TwoPhase Termination 那么有这个线程模型基本上可以用到大多数编程任务中我需要指出的三点是 从高层次上我们可以再验证是否含盖了所有的情况 其实模式不是完全固定的或者说象定律一样而模式可以为不同的情况进行适当 的调整和组合目的是为了简洁和高效 学习模式是为了具备更好的分析问题的能力 而似乎这些来自西方的技术并且是目前的我们有没有呢?其实我个人有个大胆的推测我认为我们祖先的《孙子兵法》就是很好设计模式因为它符合设计模式需要的基本特征就是在特定的条件下用某种特定的方式合理且高效的解决问题只不过一是用在军事上二是完备性方面我们还没研究但我认为我们至少没有很好的扩展和进行类比式的应用否则今天可能是我们中国人教外国人什么是设计模式 类比的方法实际上是发明或发现的常用方法不知能否让你感觉到其实外国的技术并不是那么的神秘也许我们从自身的文化当中挖掘出的东西太少了 PS更深一步的研究你可以参考Doug Lea <> |