如题:在现实的应用中,线程资源应该放在哪些代码块中?这个问题可能涉及到多线程设计模式。以下内容为随笔。
request-handle-response应用
一个request-handle-response模式下的应用, 若所有的代码模块都在一个线程中,这个唯一的线程只能串行地处理request, handle, response三个部分。若是在多线程中,一个直觉的线程分配方式就是:三个模块每个各给一份线程资源,三个模块之间再通过同步器(synchronizer)进行协调。
应用与自动机械系统
一个应用可以看作是一个自动机械系统,而应用中的线程(池)可类比机械系统的动力源,单线程应用对应单动力源机械系统,多线程对应多动力源机械系统。在生产者-消费者模型中,生产者和消费者各需要一份动力源。
结论
从整体的角度来看,线程资源应该分布于两大类和三大块,即:数据的输入/输出以及数据的处理模块中。request-handle-response正好符合这个结论;而在生产者和消费者模式中,生产者和消费者都可看作是处理数据模块。整个应用都是request-handle-response模式下的自相似组合。