CN1241111C - 用于支持在计算机系统上进行程序设计的设备和方法 - Google Patents
用于支持在计算机系统上进行程序设计的设备和方法 Download PDFInfo
- Publication number
- CN1241111C CN1241111C CN03131184.9A CN03131184A CN1241111C CN 1241111 C CN1241111 C CN 1241111C CN 03131184 A CN03131184 A CN 03131184A CN 1241111 C CN1241111 C CN 1241111C
- Authority
- CN
- China
- Prior art keywords
- thread
- dialog box
- cpu
- gui dialog
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示了一种支持程序设计的装置、方法和程序产品。依据其一个实施例,计算机系统(1)在显示器(17a)上显示了GUI对话框(30),该对话框能促使操作者设置描述线程源代码源文件(3)的识别名和线程类型。当我们通过GUI对话框(30)设置源文件(3)的识别名和线程类型时,计算机系统获得了相应于该线程类型的源代码模板,并将由GUI对话框(30)设置的识别名反射在源代码模板中。计算机系统(1)基于源代码模板,用通过GUI对话框(30)设置的识别名创建源文件(3)。计算机系统(1)将通过GUI对话框(30)设置的识别名和线程类型存储在定义文件(4)中,作为由识别名设置的源文件(3)线程定义信息。
Description
(1)技术领域
本发明涉及在计算机上支持高效编程设计可兼容多线程目标程序的装置、方法和程序产品。
(2)背景技术
可兼容多线程的目标程序(应用软件、实用软件或类似软件)能并行执行多个的处理单元,即线程。对计算机上这些程序产品的设计来说,必须编制各个线程的源文件和一个定义文件。每个源文件存储了代表相关线程执行内容的源代码。源代码是用程序设计语言描述的软件设计。定义文件存储了定义各个线程执行条件的线程定义信息。
程序员在计算机上创建了源文件和定义文件后,他(她)启动一个预先定义的编译程序。然后,源文件和定义文件被编译并产生可兼容多线程的目标程序。编译软件是将源代码转换为目标代码的软件。目标代码是用计算机能解释的机器语言描述的程序。
传统上,用文本文件编辑软件,即编辑器创建源文件和定义文件是常规的做法。当使用这个软件时,程序员通过在键盘上敲击键一个字符接一个字符的顺序输入作为文本数据的源代码和线程定义信息,由此创建了源文件和定义文件。由于这个原因,程序员必须理解使用各个单独源代码和线程定义信息的意义和方法。然后,程序员必须用正确拼写的文本数据用合适的顺序在源文件和定义文件的恰当位置描述源代码和线程定义信息。
程序设计的初学者在他(她)开发出一条程序之前得花费大量的时间用来学习。而且,文本数据的输入工作是烦琐和消耗时间的。另外,经常由于源代码和线程定义信息的输入错误导致编译失败。
(3)发明内容
因此,我们需要提供一个程序设计支持装置、方法和程序产品,甚至能让初学者简单的做程序设计工作而不产生错误。
根据本发明的实施例,我们提供了一种用于支持在一计算机系统上进行程序设计的设备。该设备包含:
模板存储单元,用于存储源代码的模板,所述模板被设置为与线程类型一致;
定义信息存储单元,用于存储线程的定义信息;
显示装置,用于在所述计算机系统的显示器上显示GUI对话框,所述对话框允许设置一源文件的识别名和线程类型,而所述源文件存储了所述线程的源代码;
获得装置,用于当通过GUI对话框设置所述源文件的识别名和线程类型时,获得与来自所述模板存储单元的线程类型相对应的模板;
生成装置,它根据所述获得装置获得的模板的源代码,用通过GUI对话框设置的识别名,生成一源文件;
存储装置,用于将通过GUI对话框设置的识别名和线程类型存储在所述定义信息单元中,作为用所述识别名设置的所述源文件的线程定义信息。
根据本发明的实施例,我们提供了一种用于支持在一计算机系统上进行程序设计的方法。该方法包含下述步骤:
在所述计算机系统的显示器上,显示GUI对话框,所述对话框允许设置一源文件的识别名和线程类型,所述源文件存储了所述线程的源代码;
当通过GUI对话框设置所述源文件的识别名和线程类型时,获得与所述线程类型相对应的模板;
将通过GUI对话框设置的识别名反映到所述获得的模板的源代码上;
根据所述模板的源代码,用通过GUI对话框设置的识别名,生成一源文件;
存储通过GUI对话框设置的识别名和线程类型,并将它们作为用识别名设置的源文件的线程定义信息。
本发明的另外目的和优点将在接下来的描述中说明,从描述中,有部分目的和优点是显而易见的,它们也可从本发明的应用中学习到。尤其通过在下文中指出的工具和组合,我们可以意识到并获得该发明的这些目的和优点。
(4)附图说明
该附图收编为说明书的一部分,它阐明了该发明的实施例,并有以上给出的主要描述和以下给出实施例的详细描述,用来解释该发明的原理。
图1是用来说明本发明一个实施例程序设计概要的方框图;
图2是显示该实施例中计算机主要硬件安排的方框图;
图3是显示该实施例中由CPU执行的程序设计支持程序的主要进程的流程图;
图4是图3中方法输入进程细节的流程图;
图5是图3中线程类型选择进程细节的流程图;
图6是图3中队列创建进程细节的流程图;
图7是图3中异或表格(exclusive table)创建进程细节的流程图;
图8是图3中并行运行计数限度(parallel run count limit)进程细节的流程图;
图9是图3中线程定义存储进程细节的流程图;
图10是图9中异或表格定义存储进程细节的流程图;
图11是图9中队列定义存储进程细节的流程图;
图12是图3中源文件存储进程细节的流程图;
图13示出线程创建对话框的一个例子;
图14示出队列创建对话框的一个例子;
图15示出异或表格创建对话框的一个例子;
图16示出各种定义记录的格式;
图17示出定义文件的一个例子;
图18是模板文件“DYNAMIC”的一个例子。
(5)具体实施方式
在下文中,我们将用附图来描述本发明的一个实施例。
注意这个实施例被应用在计算机系统支持可兼容多线程目标程序的程序设计的情况下。在这个实施例中,某个目标程序大量进程的并行执行被称作多线程进程,而且每个单独的进程单元被称作线程。
这个实施例中程序设计的概要将首先用图1来描述。
程序设计的第一步是计算机系统1中源程序2的创建。计算机系统1包含,例如,个人电脑、工作站或类似的系统。源程序2包括各个线程的源文件3和一个定义文件4。每个源文件3存储了指示相关线程执行内容的源代码。定义文件4存储了定义各个线程执行条件或类似情况的线程定义信息。
程序设计的第二步是由编译器5编译源程序2。编译器5将源文件3和定义文件4编译成编译器语言。
编译源文件2产生了目标程序6,并作为要达到的目标。
在计算机系统上1上运行支持程序7用来支持程序设计的第一步。支持程序7包括一个模板文件8。模板文件8将在后面描述。
图2是显示计算机系统1主要硬件安排的方框图。计算机系统1包含作为主控制器的CPU(中央处理单元)11、作为主存储单元的ROM(只读存储器)12和RAM(随机存取存储器)13、作为辅助存储装置的HDD(硬盘驱动)装置14以及不同的输入/输出接口,比如键盘接口15、鼠标接口16、显示接口17、存储媒介接口18和类似的接口。CPU 11、ROM 12、RAM 13、HDD装置14和不同的输入/输出接口15、16、17和18被连接到总线19上,总线19包括地址总线、数据总线和类似总线。
键盘15a上排列有符号键、数字键、空格键、回车键、光标键、功能键和类似的键,它们被连接到键盘接口15上。显示装置17a,比如液晶显示器,CRT显示器或类似设备被连接到显示接口17上。鼠标16a是用来移动在显示装置17a屏幕上显示的指针的指示装置。存储媒介18a,比如说软盘、CD-ROM或类似的设备被连接到存储媒介接口18上。
计算机系统1通过存储媒介18读出存储在存储媒介18a中的支持程序7,该程序被存储在HDD装置14中。当计算机系统1有有线或无线通信接口时,支持程序7能通过通信媒介存储在HDD装置14中。
下面,我们将用流程图图3~12来描述安装有程序设计支持程序7的计算机系统1的工作。
当计算机系统1启动程序设计支持程序7时,CPU 11开始图3中的主进程。
在步骤1中,CPU 11通过GUI(图形用户接口)在显示装置17a上显示线程创建对话框。
图13显示了线程创建对话框的一个例子。线程创建对话框30上形成了方法区域34、异或表格区域35和线程并行运行计数区域36。而且提供了“好”按钮37和取消按钮38。
在方法区域31形成了作为每个源文件3识别名的方法名区域31a,类名区域31b和源文件名区域31c。方法名区域31a显示了作为每个源文件3识别名的方法名。在方法区域31中,操作者(程序员)能通过由指针标出类名区域31b从键盘输入想要的类名。
在线程区域32形成了选择子(selector)32a、32b、32c这三种不同的线程类型(“动态”(“Dynamic”)、“定态”(“Residence”)和“独态”(“Singleton”))。每个选择子32a、32b和32c被用来标出源文件的线程类型,该源文件的文件名被显示在源文件名区域31c中。我们根据执行操作的不同将线程分成不同的类型。
属于线程类型“动态”的线程是非定态线程。这个线程响应进程请求消息被动态创建,并执行一条进程。
属于线程类型“定态”的线程是定态线程。这个线程在启动进程时被映射到内存上,并执行控制响应进程请求消息的工作逻辑部分(job logic part)。
属于线程类型“独态”的线程是定态线程。这个线程控制对单个实施例的独态线程进行连续执行。
在线程池区域33中形成了用来选择线程池是否被使用的选择子33a和33b。对线程类型“动态”的线程来说,线程池是可选择的。线程类型为“定态”的线程不可避免的使用线程池。线程类型为“独态”的线程不使用线程池。
在队列区域34形成了用来选择消息队列是否被使用的选择子34a和34b、队列名区域34c和用来指导队列产生的按钮34d。消息队列化是在叫做队列的缓冲区内存储繁忙接受消息(进程请求),并顺序执行它们的方法。对线程类型为“动态”和“定态”的线程来说,消息队列化是可选择的。线程类型为“独态”的线程不使用消息队列化。队列名区域34c将队列名以下拉菜单的形式显示。
在异或表格区域35形成了用来选择异或控制是否被使用的选择子35a和35b、表格名区域35c和用来指导异或表格产生的按钮35d。对线程类型为“动态”和“定态”的线程来说异或控制是可选择的。线程类型为“独态”的线程不使用异或控制。表格名区域35c将异或表格名以下拉菜单的形式显示。在RAM 13中异或表格被确定用来注册使用异或控制的线程名。
在线程并行运行计数区域36形成了用来选择并行运行计数被限制的选择子36a和36b以及并行运行计数区域36c。并行运行计数值是能并行运行线程的最大数目。对线程类型为“动态”和“定态”的线程来说并行运行计数是可选择的。线程类型为“独态”线程的并行运行计数被固定为“1”。并行运行计数区域36c显示并行运行计数值。
CPU 11通过显示线程创建对话框30来促使操作者(程序员)设置方法名和线程类型。CPU 11还通过显示线程创建对话框30来促使操作者(程序员)设置线程执行条件,比如线程池、消息队列化、异或控制、并行运行计数和类似的条件。
当线程创建对话框30被显示后,CPU 11在步骤2中检查文本数据是否被输入到方法区域31中的方法名区域31a或类名区域31b中,如果没有文本数据输入,CPU 11前进到步骤3的进程中。
如果文本数据被输入,那么CPU 11执行方法输入进程。这个进程将在下文中用流程图图4来详细说明。
在步骤21中,CPU 11决定文本数据是输入到方法名区域31a中还是类名区域31b中。
如果文本数据被输入到方法名区域31a中,那么CPU 11将该文本数据以步骤22中的方法名存储在RAM 13中。CPU 11在RAM 13中存储类名和源文件名。
在步骤24中,CPU 11在方法区域31中的类名区域31b和源文件名区域31c中显示类名和源文件名。在步骤25中,CPU 11将方法名输入标志(flag)设置为“1”。该输入标志被存储在RAM 13中。
如果文本数据被输入到类名区域31b中,那么CPU 11在步骤26中检查输入标志是否是“1”,如果输入标志不是“1”,那么CPU 11发出产生错误的消息,因为类名是在方法名之前输入的。
如果输入标志是“1”,那么CPU 11通过在步骤27中输入到类名区域31b中的文本数据重写存储在RAM 13中的类名。
当完成方法输入进程后,CPU 11前进到步骤3中的进程。
CPU 11在步骤3中检查在线程类型区域32中选择子32a、32b、32c中的一个是否被选。如果这些选择子都没有被选中,那么CPU 11就前进到步骤4的进程中。
如果选择子32a、32b、32c中的一个被选中,那么CPU 11执行线程类型选择进程。该进程将在下文中用图5的流程图来详细说明。
RAM 13存储“动态”,并将它作为线程类型识别数据的默认数据。
CPU 11决定与在步骤31中选择的选择子32a、32b、32c中的一个相关的线程类型。如果我们选择了与线程类型“动态”相关的选择子32a,那么CPU 11将存储在RAM 13中的线程类型识别数据改写为“动态”。如果我们选择了与线程类型“定态”相关的选择子32b,那么CPU 11将RAM 13中的线程类型识别数据改写为“定态”。如果我们选择了与线程类型“独态”相关的选择子32c,那么CPU 11将RAM 13中的线程类型识别数据改写为“独态”。
注意线程类型识别数据“动态”被用做默认数据。然而,数据“定态”和“独态”也可以替代使用。
在完成线程类型选择进程后,CPU 11前进到步骤4的进程中。
在步骤4中CPU 11检查线程池区域33中选择子33a和33b中的一个是否被选中。如果与“不使用线程池”相关的选择子33a被选中,那么CPU 11就将线程池标志SPF设置为“0”。如果与“使用线程池”相关的选择子33b被选中,那么CPU 11就将线程池标志SPF设置为“1”。线程池标志SPF被存储在RAM 13中。
当线程类型“动态”或“定态”被选中时,选择子33a和33b是可选择的。当线程类型“独态”被选中时,选择子33a和33b不能被选择。当线程类型“独态”被选中时,线程池标志SPF被自动设置为“1”。
在步骤5中,CPU 11检查到队列区域34的输入是存在还是空缺。如果没有检测到输入,那么CPU 11就前进到步骤6的进程中。
如果与“不使用消息队列化”相关的选择子34a被选中,那么CPU 11就将队列标志QUF设置为“0”。队列标志QUF被存储在RAM 13中。之后,CPU11前进到步骤6的进程中。
如果输入队列发生按钮34d,那么CPU 11就执行队列发生进程。这个进程将在下文中用图6的流程图来详细说明。
在步骤51中,CPU 11使用GUI在显示装置上显示队列发生对话框。
图14显示了一个队列发生对话框的例子。在队列发生对话框40中形成了队列名区域41、队列大小区域42、优先级区域43和存储标志区域44。我们而且提供了“好”按钮45和取消按钮46。在存储标志区域44形成了用来选择是否保存存储标志的选择子44a和44b。
CPU 11通过显示队列发生对话框40来促使操作者(程序员)设置队列名、队列大小、优先级和存储标志。队列大小指示了能存储于队列中的消息数量[1到99999]。优先级是队列的优先级,被设置为10个等级。优先级=1是最高优先级。在所有较高优先级被处理之前,较低的优先级是不能被执行的。如果存储标志被设置为“存储”,那么当进程完成时,未处理的队列就被存储在文件里。当下次启动该进程时,该存储的队列就从该文件中读出并处理。
如果文本数据在步骤52中输入到队列名区域41中,那么CPU 11就将该文本数据作为队列名存储在RAM 13中。
如果数值数据在步骤53中输入到队列大小区域42中,范围从1到99999,那么CPU 11就将该数值数据作为队列大小存储在RAM 13中。
如果数值数据在步骤54中输入到优先级区域43中,范围从1到10,那么CPU 11就将该数值数据作为优先等级存储在RAM 13中。
如果存储标志区域44中选择子44a和44b中的一个在步骤55中被选中,那么CPU 11就确定那个已经被选中的选择子。如果选中与“不保存存储标志”相关的选择子44a,那么CPU 11就将队列保存标志QPF设置为“0”。如果输入与“保存存储标志”相关的选择子44b,那么CPU 11就将队列保存标志QPF设置为“1”。
如果在步骤56中输入“好”按钮,那么CPU 11在显示装置17a上控制屏幕显示,返回到线程发生对话框30。然后,CPU 11在线程发生对话框30的队列名区域34c上显示存储在RAM 13中的队列名。之后,CPU 11将队列标志QUF设置为“1”,并前进到步骤6的进程中。
如果在步骤57中输入取消按钮46,那么CPU 11在显示装置17a上控制屏幕显示,返回到线程发生对话框30。CPU 11清除存储在RAM 13中并与消息队列相关的数据(队列名、队列大小、优先级、保存标志)。如果队列标志QUF是“1”,那么CPU 11就将它设置为“0”,并前进到步骤6的进程中。
CPU 11检查步骤6中到异或表格区域35输入的存在或空缺。如果没有检测到输入,那么CPU 11就前进到步骤7的进程中。
如果选中与“不使用异或表格(不使用异或控制)”相关的选择子35a,那么CPU 11就将异或表格标志EXF设置为“0”。异或表格标志EXF被存储在RAM 13中。之后,CPU 11前进到步骤7的进程中。
如果输入异或表格创建按钮35d,那么CPU 11就执行异或表格创建进程。该进程将在下文中用图7的流程图来详细说明。
在步骤61中,CPU 11用GUI在显示装置17a上显示异或表格创建对话框。
图15显示了异或表格创建对话框的一个例子。在异或表格创建对话框50上形成了表格名区域51、目标线程的方法名列表区域52、异或线程的方法名列表53和新方法名区域54。而且其中放置了异或线程的“加”按钮55和“删除”按钮56、“所有加”按钮57、“所有删除”按钮58、新方法名的“加”按钮59、“好”按钮60和取消按钮61。
CPU 11通过显示异或表格创建对话框促使操作者(程序员)选择将经历异或控制的线程。
CPU 11在步骤62中检查异或表格是否被存储在RAM 13中。如果没有异或表格存储,那么CPU 11就等待步骤63中异或表格名的输入。如果步骤64中输入取消按钮61,那么CPU 11控制显示装置17a的屏幕显示,返回到线程发生对话框30,并前进到步骤7的进程中。
如果异或表格的表格名输入到表格名区域51中,那么CPU 11在步骤65中用RAM 13中异或表格的表格名创建异或表格。在步骤66中,CPU 11显示方法名列表区域52中所有存储在RAM 13中的方法名。此时,因为异或列表不存储将要经历异或控制的线程方法名,所以在方法名列表区域53上什么都不显示。
如果在步骤62中异或表格已经被存储在RAM 13中,那么CPU 11就跳到步骤66的进程中。
在步骤66中,CPU 11显示存储在异或表格中方法名列表区域53中的方法名和存储在RAM 13中方法名列表区域52中余下的方法名。
在完成了步骤66的进程后,CPU 11等待按钮55到61其中之一的输入。
如果在步骤67中输入新方法名的“加”按钮59,那么CPU 11就将输入到新方法名区域54的方法名存储到RAM 13中。在方法名被存储后,CPU 11更新方法名列表区域52和53的显示内容。然后,CPU 11再次等待按钮55到61其中之一的输入。
如果在步骤68中输入异或线程“加”按钮55,那么CPU 11将方法名列表区域52中显示的其中一个选择方法名复制到RAM 13中的异或表格里。在方法名被复制到异或表格后,CPU 11更新方法名列表区域52和53中的显示内容。然后,CPU 11再次等待按钮55到61其中之一的输入。
如果在步骤69中输入异或线程删除按钮56,那么CPU 11就从异或表格中删除方法名列表区域53中显示的其中一个选择方法名。当方法名从异或表格中删除之后,CPU 11更新方法名列表区域52和53中的显示内容。然后,CPU11再次等待按钮55到61其中之一的输入。
如果在步骤70中,输入所有的“加”按钮57,那么CPU 11将方法名列表区域52中显示的所有方法名复制到RAM 13中的异或表格里。在所有方法名被复制到异或表格后,CPU 11更新方法名列表区域52和53中的显示内容。然后,CPU 11再次等待按钮55到61其中之一的输入。
如果在步骤71中,输入所有的“删除”按钮58,那么CPU 11将方法名列表区域53中显示的所有方法名从异或表格里删除。在所有方法名从异或表格里删除之后,CPU 11更新方法名列表区域52和53中的显示内容。然后,CPU11再次等待按钮55到61其中之一的输入。
如果在步骤72中输入“好”按钮60,那么CPU 11控制显示装置17a的屏幕显示,返回到线程发生对话框30。CPU 11显示存储在RAM 13中的异或表格名,该表格名在线程对话框30中的表格名区域35c里。CPU 11将异或标志表格EXF设置为“1”,并前进到步骤7的进程中。
如果在步骤73中输入“取消”按钮61,那么CPU 11控制显示装置17a的屏幕显示,返回到线程发生对话框30。CPU 11删除存储在RAM 13中的异或表格。CPU 11将异或标志表格EXF设置为“0”,并前进到步骤7的进程中。
在步骤7中,CPU 11检查到并行运行计数区域36中输入的存在或空缺。如果没有检测到输入,那么CPU 11就前进到步骤8的进程中。
如果选择了与“不限制并行运行计数”相关的选择子36a,那么CPU 11就将并行运行计数标志PRF设置为“0”。并行运行计数标志PRF被存储在RAM13中。之后,CPU 11前进到步骤8的进程中。
如果选择了与“限制并行运行计数”相关的选择子36b,那么CPU 11就执行并行运行计数限制进程。该进程将在下文中用图7的流程图详细说明。
在步骤81中,CPU 11等待到并行运行计数区域36中并行运行计数区域36c的不小于0的数值输入。如果有数值输入,那么在步骤82中CPU 11就检查中输入的数值是否为“0”。
如果输入的是比“0”大的数值,那么CPU 11就将该数值作为并行运行计数存储到RAM 13中,并显示并行运行计数区域36c中的该数值。CPU 11将并行运行计数标志PRF设置为“1”,并前进到步骤8的进程中。
如果输入的是“0”,那么CPU 11就检查并行运行计数标志PRF。如果并行运行计数标志PRF是“1”,那么CPU 11就将并行运行计数标志PRF设置为“0”,并前进到步骤8的进程中。
在步骤8中,CPU 11检查线程发生对话框30中的“好”按钮37是否输入了。如果“好”按钮37没有输入,那么在步骤9中CPU 11就检查“取消”按钮38是否输入了。如果“取消”按钮38也没有输入,那么CPU 11就返回到步骤2的进程中。
如果“好”按钮37输入了,那么CPU 11就执行线程定义存储进程。该进程将在下文中用图9的流程图来详细描述。
在步骤91中,CPU 11检查方法名是否被输入到方法名区域31中的方法名区域31a中。如果没有方法名输入(没有方法名存储在RAM 13中),那么CPU11就前进到步骤10的进程中。
如果输入方法名(方法名被存储在RAM 13中),CPU 11将该方法名和相关的类名设置在线程定义记录(ON_JOB)的第一和第二参数中。图16显示了线程定义记录(ON_JOB)的格式。
CPU 11检查由选择子32a、32b、32c选择的线程类型。这些选择子是从步骤92中三个不同的线程类型得到的。
如果选择线程类型“独态”(线程类型识别数据“独态”被存储在RAM 13中),那么CPU 11执行下面的进程。
CPU 11将线程类型识别数据“独态”、并行运行计数[1]和数据“空”分别设置在线程定义记录(ON_JOB)的第三、第四和第五个参数中。数据“空”表示我们没有使用异或表格、消息队列化或线程池。
照这样,因为我们选定了线程定义记录(ON_JOB),所以在步骤97中,CPU 11反射了源程序2中定义文件4里的线程定义记录(ON_JOB)。之后,CPU 11前进到步骤10的进程中。
如果选择线程类型“定态”(线程类型识别数据“定态”被存储在RAM 13中),那么CPU 11就执行下面的进程。
CPU 11将线程类型识别数据“定态”和数据“UseMsThreadPool”分别设置为线程定义记录(ON_JOB)的第三和第七个参数中。数据“UseMsThreadPool”表示我们使用了线程池。
在步骤94中,CPU 11检查并行运行计数标志PRF。如果并行运行计数标志PRF是“0”,那么CPU 11就将并行运行计数[0]设置在线程定义记录(ON_JOB)的第四个参数中。
如果并行运行计数标志PRF是“1”,那么CPU 11就将存储在RAM 13中的并行运行计数设置在线程定义记录(ON_JOB)的第四个参数中。
在步骤95中,CPU 11检查异或表格标志EXF。如果异或表格标志EXF是“0”,那么CPU 11就将数据“空”设置在线程定义记录(ON_JOB)的第五个参数中。数据“空”表示没有使用异或控制。
如果异或表格标志EXF是“1”,那么CPU 11就将存储在RAM 13中的异或表格名设置在线程定义记录(ON_JOB)的第五个参数中。
CPU 11执行异或表格定义存储进程。异或表格定义存储进程将在下面说明。
在步骤96中,CPU 11检查队列标志QUF。如果队列标志QUF是“0”,那么CPU 11就省略了线程定义记录(ON_JOB)的第六个参数。这时插入到第七个参数里的数据“UseMsThreadPool”被移动到第六个参数。
如果队列标志QUF是“1”,那么CPU 11就将存储在RAM 13中的队列名设置在线程定义记录(ON_JOB)的第六个参数中。
CPU 11执行队列定义存储进程。队列定义存储进程将在下面说明。
在步骤97中,CPU 11反射了源程序2中定义文件4里的线程定义记录(ON_JOB)。之后,CPU 11前进到步骤10的进程中。
如果选择了线程类型“动态”(线程类型识别数据“动态”被存储在RAM13中),那么CPU 11就执行下面的进程。
CPU 11将线程类型识别数据“动态”设置在线程定义记录(ON_JOB)的第三个参数中。
在步骤93中,CPU 11检查线程池标志SPF。如果线程池标志SPF是“0”,那么CPU 11就省略线程定义记录(ON_JOB)的第七个参数。如果线程池标志是“1”,那么CPU 11就将数据“UseMsThreadPool”设置在第七个参数中。
之后,CPU 11如同在选择线程类型“定态”的情况下顺序执行步骤94到步骤97的进程。这样,因为我们选定了线程定义记录(ON_JOB),所以CPU11反射了源程序2中定义文件4里的线程定义记录(ON_JOB)。之后,CPU 11前进到步骤10的进程中。
异或表格存储进程将在下文中用图10的流程图来说明。
当异或表格存储进程启动后,CPU 11将存储在RAM 13中的异或表格名设置在异或表格定义记录(EXCLUSIVE_JOB)的第一个参数中。图16显示了异或表格定义记录(EXCLUSIVE_JOB)的格式。
CPU 11检查存储在RAM 13中的异或表格是否存储了将要经历异或控制的线程方法名。如果存储了方法名,那么CPU 11就将所有存储的方法名依次设置在异或表格定义记录(EXCLUSIVE_JOB)的第二和随后的参数中。
如果没有存储方法名,那么CPU 11就省略异或表格定义记录(EXCLUSIVE_JOB)的第二和随后的参数。这样,因为我们选定了异或表格定义记录(EXCLUSIVE_JOB),所以CPU 11反射了定义文件4里的异或表格定义记录(EXCLUSIVE_JOB)。之后,CPU 11前进到步骤96的进程中。
队列定义存储进程将在下文中用图11的流程图来说明。
当队列定义存储进程启动后,CPU 11分别将存储在RAM 13中的队列名、队列大小和优先级设置在队列定义记录(THREAD_QUE)的第一到第三个参数中。图16显示了队列定义记录(THREAD_QUE)的格式。
CPU 11检查队列保存标志QPF。如果队列保存标志QPF是“1”,那么CPU
11就将数据“QueSaveFile”设置在队列定义记录(THREAD_QUE)的第四个参数中。数据“QueSaveFile”表示已存储保存标志。
如果队列保存标志QPF是“0”,那么CPU 11就忽略队列定义记录(THREAD_QUE)的第四个参数。这样,因为我们选定了队列定义记录(THREAD_QUE),所以CPU 11反射了定义文件4里的队列定义记录(THREAD_QUE)。之后,CPU 11前进到步骤97的进程中。
图17示出定义文件4的一个例子。在图17中,队列定义记录(THREAD_QUE)被反射在(插入在)源代码“protected override void(保护替换空置)QUEMAP”相邻位置的一句话中。线程定义记录(ON_JOB)被反射在(插入在)源代码“protected override void JOBMAP”相邻位置的一句话中。
在步骤10中,CPU 11执行源文件保存进程。该进程将在下文中用图12的流程图详细描述。
在步骤101中,CPU 11方法名是否输入到了方法区域31中的方法名区域31a中。如果没有方法名输入(没有方法名存储在RAM 13中),那么CPU 11就前进到步骤11的进程中。
如果方法名输入了(方法名存储在RAM 13中),那么在步骤102中,CPU11检查由选择子32a、32b和32c之一选择的线程类型。这些选择子是从三种不同的线程类型中得来的。
如果选择线程类型“独态”(线程类型识别数据“独态”被存储在RAM 13中),那么CPU 11从模板文件8中读出模板数据“独态”。CPU 11反射模板数据“独态”中的方法名和类似存储在RAM 13中的方法名。
如果选择线程类型“定态”(线程类型识别数据“定态”被存储在RAM 13中),那么CPU 11从模板文件8中读出模板数据“定态”。CPU 11反射模板数据“定态”中的方法名和类似存储在RAM 13中的方法名。
如果选择线程类型“动态”(线程类型识别数据“动态”被存储在RAM 13中),那么CPU 11从模板文件8中读出模板数据“动态”。CPU 11反射模板数据“动态”中的方法名和类似存储在RAM 13中的方法名。
模板文件8存储了源代码的模板,这些源代码被设置为与线程类型一致。图18显示了模板数据“动态”的一个例子。方法名被反射(插入)到图18的源代码“FUNC_NAME”的一部分中。
在步骤103中,CPU 11基于反射方法名和类似名的模板数据,创建一个源文件3。然后,CPU 11将此源文件3保存在源程序中。CPU 11清除存储在RAM13中的数据(线程名、类名、源文件名、线程识别数据、异或表格、队列数据、不同的标志和类似数据)。之后,CPU 11前进到步骤11的进程中。
在步骤11中,CPU 11退出程序设计支持程序7。
当计算机系统1启动程序设计支持程序7时,线程发生对话框30显示在显示装置17a上。程序员决定首先创建的新源文件3的方法名。程序员将该方法名输入到方法区域31中的方法名区域31a中。然后,基于该方法名,类名和源文件名被自动创建。
然后程序员确定源文件3的线程类型。程序员点击线程类型区域32中选择子32a、32b和32c中的一个,它们相应于确定的线程类型。
如果确定的线程类型是“动态”的,那么程序员确定是否使用线程池。如果使用线程池,那么程序员点击在线程池区域33上的选择子33b。
如果确定的线程类型是“动态”或“定态”的,那么程序员确定是否使用消息队列化。如果使用消息队列化,那么程序员点击队列区域34上的队列创建按钮34d。响应该操作后,队列发生对话框40显示在显示装置17a上。程序员通过队列发生对话框40输入想要的队列名、队列大小、优先级和保存标志存在或空缺信息。
如果确定的线程类型是“动态”或“定态”的,那么程序员确定是否使用异或控制。如果使用异或控制,那么程序员点击异或表格区域35上的异或表格创建按钮35d。响应该操作后,异或表格创建对话框50显示在显示装置17a上。程序员从方法名列表区域52中选择将要经历异或控制的线程方法名,并输入异或线程“加”按钮55。然后,将要经历异或控制的线程方法名被加到方法名列表区域53中。
如果确定的线程类型是“动态”或“定态”,那么程序员确定是否限制并行运行计数。如果限制并行运行计数,那么程序员在并行运行计数区域36中选择选择子36b,然后将并行运行计数输入到并行运行计数区域36e中。
之后,程序员在线程发生对话框30上输入“好”按钮37。响应该操作后,线程定义记录(ON_JOB)被反射在定义文件4中。该线程定义记录包括方法名、类名、线程类型识别数据、并行运行计数、异或表格名、队列名和线程池管理有效性数据的参数。
当要进行异或控制时,异或表格定义记录(EXCLUSIVE_JOB)被反射在定义文件4中,异或表格定义记录包括异或表格名和异或线程的方法名参数。
当使用消息队列化时,队列定义记录(THREAD_QUE)被反射在定义文件4中,队列定义记录包括队列名、队列大小、优先级和保存标志的参数。
随后,模板数据从模板文件8中读出。如果确定的线程类型是“动态”的,那么读出模板数据“动态”。如果确定的线程类型是“定态”的,那么读出模板数据“定态”。如果确定的线程类型是“独态”的,那么读出模板数据“独态”。
之后,存储在RAM 13中的线程名被反射在从模板文件8中读出的模板数据里,这样就创建了源文件3。该源文件3被保存在源程序2中。
照这样,程序员通过显示在显示装置17a上的GUI对话框30、40和50仅输入需要的最小信息就能创建每个线程和一个定义文件4的源文件3。包含源文件3和定义文件4的源程序由预先确定的编译器5编译,这样就创建了想得到的目标,即目标程序6。
因此,甚至当程序员不理解使用每个单独源代码的意义和方法时,他(她)也能进行程序设计。因为没有源代码的输入错误发生,所以甚至一个初学者也能简单进行程序设计而不犯错误。
注意这个实施例使用了三个可选择的线程类型“动态”、“定态”和“独态”。然而,线程类型并不局限于这三种。
在上面的实施例中,程序设计支持程序7通过存储媒介或通信媒介安装到计算机系统1上。本发明也包括对预存在程序设计支持程序7中的程序设计有贡献的计算机系统。
对本领域熟练的技术人员,他们能轻易发现另外的优点和改进方法。因此,在更广阔的领域,该发明并不局限于这里显示和说明的具体细节和代表实施例。因此,在不背离由附加权利要求书和同等文件定义的主要发明概念精神和范围的前提下,我们可以进行不同的改进。
Claims (8)
1.一种用于支持在一计算机系统(1)上进行程序设计的设备,其特征在于,它包含:
模板存储单元(8),用于存储源代码的模板,所述模板被设置为与线程类型一致;
定义信息存储单元(4),用于存储线程的定义信息;
显示装置(11),用于在所述计算机系统(1)的显示器(17a)上显示GUI对话框(30),所述对话框允许设置一源文件(3)的识别名和线程类型,而所述源文件存储了所述线程的源代码;
获得装置(11),用于当通过GUI对话框(30)设置所述源文件(3)的识别名和线程类型时,获得与来自所述模板存储单元(8)的线程类型相对应的模板;
生成装置(11),它根据所述获得装置获得的模板的源代码,用通过GUI对话框(30)设置的识别名,生成一源文件(3);
存储装置(11),用于将通过GUI对话框(30)设置的识别名和线程类型存储在所述定义信息单元(4)中,作为用所述识别名设置的所述源文件(3)的线程定义信息。
2.如权利要求1所述的设备,其特征在于,可以并行运行的最大线程数能在GUI对话框(30)中设置,并且
当通过GUI对话框(30)设置最大线程数时,将与所述最大线程数相关的信息作为线程信息,连同通过GUI对话框(30)设置的识别名和线程类型一起,存储在所述定义信息存储单元(4)中。
3.如权利要求1所述的设备,其特征在于,可以在GUI对话框(30)中设置消息队列,所述消息队列按一队列存储接收到的消息,并依次执行所存储的消息,并且
当通过GUI对话框(30)设置所述消息队列时,将与所述消息队列相关的信息作为线程定义信息,连同通过GUI对话框(30)设置的识别名和线程类型一起,存储在定义存储单元(4)中。
4.如权利要求1所述的设备,其特征在于,能在GUI对话框(30)中设置将要经历异或控制的另一个线程,以及
当通过GUI对话框(30)设置将要经历异或控制的所述另一个线程时,将与所述线程相关的信息作为线程定义信息,连同通过GUI对话框(30)设置的识别名和线程类型一起,存储在定义信息存储单元(4)中。
5.一种用于支持在一计算机系统(1)上进行程序设计的方法,其特征在于,它包含下述步骤:
在所述计算机系统(1)的显示器(17a)上,显示GUI对话框(30),所述对话框(30)允许设置一源文件(3)的识别名和线程类型,所述源文件存储了所述线程的源代码;
当通过GUI对话框(30)设置所述源文件(3)的识别名和线程类型时,获得与所述线程类型相对应的模板;
将通过GUI对话框(30)设置的识别名反映到所述获得的模板的源代码上;
根据所述模板的源代码,用通过GUI对话框(30)设置的识别名,生成一源文件(3);
存储通过GUI对话框(30)设置的识别名和线程类型,并将它们作为用识别名设置的源文件(3)的线程定义信息。
6.如权利要求5所述的方法,其特征在于,能够在GUI对话框(30)中设置可以并行运行的最大线程数,
当通过GUI对话框(30)设置最大线程数时,将与最大线程数相关的信息作为线程定义信息,连同通过GUI对话框(30)设置的识别名和线程类型一起存储。
7.如权利要求5所述的方法,其特征在于,可以在GUI对话框(30)中设置消息队列,所述消息队列按一队列存储接收到的消息,并依次执行所存储的消息,以及
当通过GUI对话框(30)设置所述消息队列时,将与所述消息队列相关的信息作为线程定义信息,连同通过GUI对话框(30)设置的识别名和线程类型一起存储。
8.如权利要求5所述的方法,其特征在于,可以在GUI对话框(30)中设置将要经历异或控制的另一个线程,并且
当通过GUI对话框(30)中设置将要经历异或控制的所述另一个线程时,将与所述线程相关的信息作为线程定义信息,连同通过GUI对话框(30)设置的识别名和线程类型一起存储。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2002142472A JP3867013B2 (ja) | 2002-05-17 | 2002-05-17 | プログラミング支援プログラム |
| JP2002142472 | 2002-05-17 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN1474266A CN1474266A (zh) | 2004-02-11 |
| CN1241111C true CN1241111C (zh) | 2006-02-08 |
Family
ID=29702745
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN03131184.9A Expired - Fee Related CN1241111C (zh) | 2002-05-17 | 2003-05-16 | 用于支持在计算机系统上进行程序设计的设备和方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US7134114B2 (zh) |
| JP (1) | JP3867013B2 (zh) |
| CN (1) | CN1241111C (zh) |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7640535B2 (en) * | 2003-01-24 | 2009-12-29 | Bea Systems, Inc. | Method for transaction processing with parallel execution |
| WO2006087728A1 (en) * | 2005-02-15 | 2006-08-24 | Codito Technologies | System for creating parallel applications |
| US8006224B2 (en) * | 2005-04-15 | 2011-08-23 | Research In Motion Limited | System and method for unified visualization of two-tiered applications |
| US20070157155A1 (en) * | 2005-12-30 | 2007-07-05 | Peters Eric C | System and method for software generation and execution |
| EP1863268A1 (en) * | 2006-05-29 | 2007-12-05 | Ricoh Company, Ltd. | Combining image processing components using visual programming |
| JP4832164B2 (ja) * | 2006-05-29 | 2011-12-07 | 株式会社リコー | 画像処理装置、アプリケーション実行方法及びアプリケーション実行プログラム |
| US20100199269A1 (en) * | 2008-02-05 | 2010-08-05 | Panasonic Corporation | Program optimization device and program optimization method |
| JP6435980B2 (ja) * | 2015-04-27 | 2018-12-12 | 富士通株式会社 | 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム |
| JP6960749B2 (ja) * | 2017-03-08 | 2021-11-05 | 東芝テック株式会社 | サーバ装置及びプログラム |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04273524A (ja) | 1991-02-28 | 1992-09-29 | Toshiba Corp | プログラム自動生成装置 |
| JPH0668082A (ja) | 1992-08-17 | 1994-03-11 | Mitsubishi Electric Corp | 定型テキスト作成装置 |
| JPH09185499A (ja) | 1995-12-28 | 1997-07-15 | Hitachi Ltd | 対話的プログラム生成方法および装置 |
| US6675371B1 (en) * | 1999-04-30 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Java and native application window integration |
| US6691301B2 (en) * | 2001-01-29 | 2004-02-10 | Celoxica Ltd. | System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures |
-
2002
- 2002-05-17 JP JP2002142472A patent/JP3867013B2/ja not_active Expired - Fee Related
-
2003
- 2003-05-14 US US10/438,281 patent/US7134114B2/en not_active Expired - Fee Related
- 2003-05-16 CN CN03131184.9A patent/CN1241111C/zh not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| CN1474266A (zh) | 2004-02-11 |
| JP2003330714A (ja) | 2003-11-21 |
| US7134114B2 (en) | 2006-11-07 |
| US20040003372A1 (en) | 2004-01-01 |
| JP3867013B2 (ja) | 2007-01-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN100340975C (zh) | 计算机系统、编译器装置以及编译方法 | |
| CN1191538C (zh) | 在超文本文档等之间导航用的多目标链接的方法和装置 | |
| CN1209725C (zh) | 文件编辑处理方法和文件编辑处理设备 | |
| CN100351835C (zh) | 信息处理设备及用于信息处理设备的方法 | |
| CN1162788C (zh) | 可换存储媒体和控制方法及计算机系统 | |
| CN1969272A (zh) | 自动生成内容的导入 | |
| CN1095174A (zh) | 用图符处理信息的系统 | |
| CN1920762A (zh) | 信息处理设备和该设备上拖动对象的处理方法 | |
| CN1601417A (zh) | 用于支持金属板加工的集成支持系统 | |
| CN1213383C (zh) | 信息处理设备,打印数据产生方法,及打印控制程序 | |
| CN1131773A (zh) | 手写文字输入显示装置 | |
| CN1241111C (zh) | 用于支持在计算机系统上进行程序设计的设备和方法 | |
| CN1278228C (zh) | 两层粘贴缓冲区和显示装置 | |
| CN1591425A (zh) | 用于产生网站导航的方法 | |
| CN1313561A (zh) | 信息结构化及应用产生的方法及其装置 | |
| CN1728145A (zh) | 信息管理装置、信息呈现方法、图像处理装置及处理方法 | |
| CN1069583A (zh) | 由单一屏面定义文件生成多版屏面 | |
| CN101057236A (zh) | 信息管理装置、方法和程序 | |
| CN101046812A (zh) | 一种数据库表记录构造与检查的方法及其装置 | |
| CN1118897A (zh) | 字符图形产生装置和方法 | |
| CN1873687A (zh) | 图像处理装置、方法以及存储程序的存储介质 | |
| CN1873688A (zh) | 图像处理设备、方法和存储有程序的存储介质 | |
| CN1777831A (zh) | 光学系统设计方法 | |
| CN1729441A (zh) | 打印控制装置和打印控制方法 | |
| CN1700201A (zh) | 图像处理装置、图像处理系统、图像处理方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| C17 | Cessation of patent right | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060208 |