多进程程序设计的方法思考及相关工具
来源:互联网 发布:我的父亲母亲 知乎 编辑:程序博客网 时间:2024/05/16 02:52
多进程程序设计是分而治之策略的实现手段,目前具体的方法我还在学习阶段,以下仅仅是我的初步思考。
面对一个问题时,可以自上而下地分析系统内需要处理哪些事情,在得到初步结论后,可以自下而上的构建(实现)。自上而下的分析并不是为了在一开始找出所有需要做的事情,并分析清楚它们之间的关系——那是瀑布模型的做法,这里的自上而下只是先给问题做个全局的鸟瞰,为自下而上的构建提供大方向以及一个基本靠谱的起点(即初步地分析至少要做哪些事情)。而自下而上的构建也不是为了直接以此得到一个完整的系统,而只是先打好基础:对于那些必须要做的事情,先一件一件地做好,在这个过程中,会引出这些事情的依赖项:必须做的事情的依赖项也是必须做的事情,这样的过程可以逐渐地使我们把所有必须做的事情找出来,而这个过程不真正去对必须做的事情做编码、调试和测试是无法凭空想和猜测来完成的。当自下而上地把所有能找到的必须做的事情都做完,然后再至上而下地分析,这时会比第一次自上而下时更能理解整个系统和要解决的问题,这时能够更容易地知道整个系统应该怎样的——比第一次自上而下时更容易。
自上而下的分析已经是多进程程序设计以外的另一个问题了,这里说说自下而上的构建过程需要些什么样的条件保障。
- 由于自下而上的构建过程中,一个小问题的解决形式就是一个小的独立的程序,所以以后必须有办法能够把这些小程序整合为一个系统。
- 由于一开始写这些小程序时,考虑的仅仅是它要解决的那一个问题,并且其使用环境(即最终的整个系统)还不明朗,所以这时的接口协议只能根据要解决的问题本身来设计,而无法顾及到今后使用它的程序。这就意味着,当以后发生协议兼容问题时,需要有办法对进程间的通信数据进行转换,以适配不同的协议,而且这个适配对于已有的所有程序必须是透明的——也就是说不需要修改已有的任何程序。
- 由于编写一个小程序时,无法得知今后的运行环境,所以当它向外界环境索取数据或服务时,它只知道自己需要什么,但却不知道该向谁去要,那么今后整合时必须有办法把服务或数据的请求交给适当的程序,然后把结果再交给适当的程序(不一定是发出请求的程序),这个过程对已有程序也必须是透明的。
就多个小程序的整合来说,最典型的做法就是编写一些shell脚本,所以我思考的方向重点放在如何在shell编程中提供这些保障,而且必须足够简单,因为我在shell编程方面也是新手。而这些保障,很可能需要编写一些小工具来提供。就目前shell里简单易用的整合手段来说,主要就是匿名管道(使用符号“|”)。然而由于多个进程所组成的结构往往是带环或树的结构,并不一定是线性的,所以匿名管道只是基础的工具之一,仅仅靠它无法完全解决问题。
- 多进程程序设计的方法思考及相关工具
- android进程相关的工具类AppUtils
- 关于程序设计的思考
- Chromium与CEF的多进程模型及相关参数
- 进程相关工具类
- 程序设计相关实验工具网址
- 进程的创建及相关api
- Android双进程保护实现的思考及过程说明
- 从硬盘安装Windows 7的方法及相关工具下载
- linux 进程(二) --- 进程的创建及相关api
- linux 进程(二) --- 进程的创建及相关api
- linux 进程(二) --- 进程的创建及相关api
- inux 进程2 --- 进程的创建及相关api
- python相关的开发及使用工具
- HL7及PIX相关的测试工具
- 进程及相关API
- 进程及相关API
- 进程控制原理及程序设计
- Silverlight边学边写之一“Silverlight+Webservice+Dataset”综合应用
- 成功的习惯
- CSS布局资料:IE5、IE6、IE7、IE8 的CSS HACK兼容列表
- Oracle SQL 内置函数的使用方法及结果
- 面向对象设计思想(C#)
- 多进程程序设计的方法思考及相关工具
- 从今天开始
- html 小记...
- Web数据库实例(php&mysql)
- 需要extends还是implements?
- what is the difference between little-endian and big-endian.
- TNS:listener does not currently know of service requested in connect descriptor
- 如何导入导出MySQL数据库
- 试图运行项目时出错:无法在web服务器上...