在应用程序中使用多线程处理需精选出具有内在并发性与并行性的架构,有些应用程序天生就适合使用多线程处理的常见架构,三种常见的多线程处理架构:(1)客户机/服务器(2)事件驱动编程(3)黑板。
-
客户机/服务器
客户机/服务器将工作模式分为两个端口,一端(客户机)请求数据或者动作,另一端(服务器)完成该请求。例如,使用一个命名管道连接两个进程时,创建管道的进程通常称为服务器,请求此管道的进程通常称为客户机。在网络环境中一些常用的客户机/服务器模型应用有:(1)文件服务器;(2)数据服务器;(3)事物服务器;(4)应用服务器;(5)逻辑服务器。1.1 文件服务器
文件服务器是客户机/服务器模型最基本应用之一,文件服务器作为共享数据库、文档、多媒体文件等中心仓库,客户机通常是请求使用文件或文件中记录网上的工作站或者终端。常用形式之一就是FTP(File Transfer Protocol,文件传输协议),一般情况下,有一台主机充当文件服务器,允许远程用户登录和执行文件上载或者下载,主机为服务器,远程计算机为客户机,客户机向服务器请求发送或者接收一个或多个文件,服务器要么接收传输的文件,要么传输被请求的文件作为应答。那我们可以想到,如果主机每次只响应一个来自客户机的请求,客户机将处于时间不确定的等待之中,若某个请求需要的处理时间比较长,那么主机则无法响应新的请求,我们可以应用多线程技术,服务器接受请求、创建线程处理请求、等待下一个请求。通常会有多个客户机同时向一个服务器提出请求,因此我们可以让服务器创建单独的线程为每个客户机提供服务。注意,文件服务器不关心信息如何被使用或者需要知道文件中什么特定的信息,它只是简单地接收客户机的请求并发送所请求的文件,客户机则进行文件或记录的余下处理过程。1.2 数据服务器和事务服务器
数据库服务器与文件服务器的区别就是它将完成需求数据或信息的查找,因此它比文件服务器完成的工作要多,通常接收复杂信息查询,需要联合和交叉查找多个数据库,无论是否找到数据,数据服务器只将反应发送给客户机;而客户机则需要构建查询、管理数据项、错误处理及显示结果,通常涉及到GUI,GUI一般使用事件驱动模型来构建,这个模型通常包含消息队列、应用窗口、消息处理器已经事件处理