




已阅读5页,还剩53页未读, 继续免费阅读
(交通运输规划与管理专业论文)基于并行处理技术的航班计划编排系统设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京航空航天大学硕士学位论文 i 摘 要 本文以航班优化与航线效益分析系统(formax)为应用背景,分析研究了提高航班计划编 排系统图形化显示和编辑处理速度的并行处理技术。在设计航班计划编排系统时,采用了多线 程、多 agent 和组件等技术,使得系统的运行效率得到很大提高。 本文在设计图形化航班计划编排系统过程中,利用多线程技术,设计了访问数据库和结构 化储存航班信息的数据处理线程, 以及用来绘制航班信息图形的显示线程。 同时, 运用多 agent 系统的设计方法,构造了在航班计划编辑过程自动保存编辑轨迹信息、自动进行航班规则检查 和智能提示错误信息的多 agent 系统,使得它们同数据处理与显示线程并行执行。在图形化显 示界面设计中,利用面向对象的组件技术,对航班信息中的机型、飞机号、飞行时间、航段 gantt 图、座位数等信息分别创建显示框架组件,并重点设计了每个组件的图形输出函数接 口,使得数据显示线程分别调用对应接口函数实现航班信息的并行显示。此外,本文设计了便 于航班信息并行处理的数据结构和数据库表结构。结果表明,采用了并行处理技术后的航班计 划编排系统的图形显示与编辑速度比采用前提高了三倍多。因此,在图形化航班编排系统中采 用并行处理技术是非常必要的。 关键词:关键词:多线程,多 agent,组件技术,航班计划 基于并行处理技术的航班计划编排系统设计 ii abstract on the application background of flight optimization and revenue maximization users manual (formax), this thesis analyses parallel processing technology to improve flight scheduling systems graphical displaying and editing speed. in the systems designing process, this thesis adopts multi-threading, multi-agent and component technology, etc, so that the systems operation efficiency is greatly enhanced. during the designing process of flight scheduling system, this thesis uses multi-threading technology to design the access database and structured storage flight informations data-processing thread, as well as flight information displaying threads. at the same time, to take the advantage of multi-agent system, this thesis designs an intelligent agent to carry out inspections of flight schedule in the editing process and an auto prompt error message agent. in the graphical displaying interface design, the object-oriented component technology is used to create different components which are to show the flight information (such as type of aircraft, fly time, leg chart, number of seats, and so on). those components are suitably laid on the flight schedule editing window, and the data displaying threads separately call graphical output function which is parallel to display the flight information through the implementation of components function. in addition, this thesis designs the data structure and the structure of database table to facilitate parallel processing. the result shows that after the use of parallel processing technology in the system, the displaying speed is three times faster than before. as a result, the parallel processing technology used in graphical flight scheduling systems is essential. keywords: multi-agent, multi-threading, component technology, flight schedule 南京航空航天大学硕士学位论文 v 图表清单 图 2.1 agent 结构.4 图 2.2 直接回复方式 .7 图 2.3 间接回复方式 .7 图 2.4 线程与进程关系图.8 图 2.5 线程生命周期 .9 图 2.6 线程并发执行分析图.9 图 2.7 线程同步方式 .10 图 2.8 vcl 对象继承树.12 图 2.9 组件定义过程 .15 图 3.1 系统功能模块图.16 图 3.2 数据处理与界面显示线程关系图.18 图 3.3 导航树结构图 .18 图 3.4 数据处理线程设计流程.21 图 3.5 显示线程处理流程.22 图 3.6 线程调度控制流程图.24 图 3.7 组件行为函数 .26 图 3.8 绘制航段 gantt 图函数处理流程.27 图 3.9 多 agent 系统结构图.28 图 3.10 规则检查 agent 处理流程.29 图 3.11 agent 之间协作关系图.30 图 3.12 添加航班处理流程.32 图 3.13 删除航班处理流程.33 图 3.14 修改航班处理流程.34 图 3.15 撤销编辑操作处理逻辑.37 图 3.16 系统 e-r 图.38 图 3.17 航班信息 e-r 图.38 图 3.18 航班航段信息 e-r 图.39 图 4.1 航班计划编辑主窗口.43 图 4.2 添加航班窗口 .44 基于并行处理技术的航班计划编排系统设计 vi 图 4.3 修改航班窗口.44 图 4.4 未采用并行处理技术的系统处理时间.45 图 4.5 采用并行处理技术的系统处理时间.45 表 3.1 组件功能介绍.25 表 3.2 航班信息表.40 表 3.3 航班航段表.41 表 3.4 航班计划编辑轨迹表.42 南京航空航天大学硕士学位论文 vii 注释表 英文简称英文简称 英文全称英文全称 中文注释中文注释 formax flight optimization and revenue maximization 航班优化与航线效益分析系统 foc flight operations control 航班运营控制系统 mas multi-agent system 多智能体系统 vcl visual component library 可视化组件库 api application programming interface 高级应用程序员接口 mdi multiple document interface 多文档界面 dll dynamic linkable library 动态链接库文件 odbc open database connectivity 开放数据库互连 kqml knowledge query and manipulation language 知识查询与操作语言 erd entity relationship diagram 实体关系图 承诺书 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进 行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外, 本学位论文的研究成果不包含任何他人享有著作权的内容。 对本论文所 涉及的研究工作做出贡献的其他个人和集体, 均已在文中以明确方式标 明。 本人授权南京航空航天大学可以有权保留送交论文的复印件, 允许 论文被查阅和借阅,可以将学位论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或其他复制手段保存论文。 (保密的学位论文在解密后适用本承诺书) 作者签名: 日 期: 南京航空航天大学硕士学位论文 1 第一章 绪论 1.1 研究背景及意义 民航运输作为现代运输方式之一,在国民经济中占有重要地位,民航业的发展直接关系到 国民经济的发展、人民生活质量和国家安全。今日的中国民航,以其所拥有的规模、基础设施、 技术装备,以及所具有的运行质量,成为我国交通运输体系的重要组成部分。中国民航发展的 这一历史性跨越,也令世界航空界瞩目。然而,面对社会快速变革,现代信息技术的迅猛发展 和普及,中国加入 wto 以后民航市场竞争的日趋激烈,以及当前世界金融危机对民航运输的 极大冲击,我国民航企业要在国内和国际航空运输市场竞争中取得主动,在“十一五”期间和 未来的十年里要继续保持快速、健康发展的势头,就必须借助于信息技术手段,建立高效的信 息系统,改进航空公司运行的业务流程和管理模式,加强航空公司运行管理研究,努力降低成 本,提高运行效率,才能使企业在激烈的市场竞争中立于不败之地。 图形化航班计划编排系统作为航班优化与航线效益分析系统 (formax) 的一个主要子系统, 它可以非常直观的实现航班计划的编排1。然而,在航班计划的图形化显示过程,客户端系统 首先从服务器端数据库中读取大量航班数据,然后对航班信息进行分析和航班规则检查,最后 将航班信息中的机型、飞机号、航段 gantt 图、飞行时间和座位数等信息分别绘制在编排窗 口中。还有在添加、删除、修改等编辑航班计划信息时,既要将编辑的航班信息保存到数据库 中,又要完成航班信息的窗口刷新。此外,为确保编辑信息的正确性,系统对编辑的航班信息 进行规范性、航段连贯性、经停时间合理性等检查,并对发现有编辑错误的航班给予及时提示。 在航班计划的图形化显示与编辑过程中,数据库操作、界面显示、航班分析、航班规则检 查等操作顺序执行时,系统会执行较长时间,极大的影响了航班计划编排效率。鉴于目前主流 操作系统已经广泛采用了多线程技术,为提高数据处理速度提供了条件2。本文利用多线程技 术的并行执行特性,提高航班计划编排系统的处理速度,减少系统响应的等待时间。同时,采 用具有自主性和并发性的多 agent 技术,使系统能够在航班计划编辑过程中自动对航班计划进 行规则检查,并智能提示用户的编辑结果的正确性与合理性。利用面向对象的组件技术,对航 班信息中的机型、飞机号、航段 gantt 图、飞行时间和座位数等信息分别定义显示框架组件, 在组件中定义可供多线程调用的图形输出接口函数,为实现这些信息的并行图形显示提供了条 件3。在航班信息显示过程中,使得数据处理与显示操作并行执行;在航班计划编辑过程中, 使得数据处理与显示操作、规则检查和错误信息操作能够并行执行。因此,在图形化航班计划 编排系统中,采用多线程、多 agent 和面向对象的组件等技术来提高航班计划的显示和编辑效 率是非常必要的。 基于并行处理技术的航班计划编排系统设计 2 1.2 国内外研究现状 目前,国内大部分航空公司都建立了各自的航班运行控制系统(foc) ,航班管理子系统作 为 foc 的一个重要子系统,它主要实现航班时刻表生成、航班时刻表管理、航班计划管理和飞 机排班等功能。在航班计划编排模块中,大部分都是以表格形式编辑航班计划,没有集中实现 航班的图形化显示,且在航班计划编辑过程中,缺少智能规则检查与错误提示功能。 在国外,starline systems 公司开发的航班计划编排系统(oasis) ,采用了图形化显示和表 格编排相结合的实现方式,其通过在表格中添加、修改、删除航班和在图形部分显示的方式实 现对航班计划的编辑,而无法在图形化窗口中直接对航班进行编辑操作。另外,系统在自动进 行规则检查和记录编辑信息方面存在不足,不能及时提示航班编辑不正确的地方,且不易撤销 错误的操作。 因此,设计一个基于并行处理技术的具有图形化和智能化的航班计划编排系统,具有非常 重要的现实意义。 1.3 主要研究内容 本论文主要由以下几个章节组成: 第一章绪论,介绍基于并行处理技术的航班计划编排系统的课题背景、国内外研究现状以 及研究目的和意义。 第二章介绍了多 agent 技术、多线程技术和组件技术等三种并行处理和显示技术,并分析 了它们在图形化航班计划编排系统中的应用。 第三章航班计划编排系统的设计,包括图形界面显示模块、航班计划编辑模块和撤销编辑 模块的并行处理设计,以及系统数据库设计。 第四章介绍了系统的具体实现,并对采用并行处理技术前后的系统性能进行了分析比较。 第五章对本文研究内容进行了总结,并提出了改进的建议。 南京航空航天大学硕士学位论文 3 第二章 并行处理技术研究 本文在设计图形化航班计划编排系统时,为提高航班信息的图形化显示与编辑速度,本章 重点研究了多线程、多 agent 技术和组件技术等在并行处理方面的应用。 具体来说,在航班计划图形化显示过程中,利用多线程技术创建了数据处理线程和数据显 示线程,二者同步并发执行,使得航班信息快速绘制在窗口中。在设计图形化显示界面时,利 用组件技术设计了显示机型、飞机号、航段 gantt 图、座位数、飞行时间等信息的框架组件, 使得数据显示线程可以通过分别调用这些组件的接口函数,实现航班信息的并行输出。在航班 计划编辑过程中, 采用多 agent 技术的设计方法, 构造了规则检查 agent 和错误信息提示 agent, 前者负责对编辑的航班信息进行规范性和合理性检查,后者根据规则检查 agent 的检查结果, 对编辑错误的航班给出所有可能的解决方案。同时,数据处理线程和数据显示线程完成数据的 更新和窗口的刷新。 2.1 多 agent 技术 agent 及多 agent 技术是目前计算机领域的研究热点, 由于其先进的思想及强大的描述客观 世界的能力,得到越来越广泛的研究和运用4。agent 是分布式人工智能的概念,是在某一环境 中能持续自主运行的独立的功能实体,其最重要的特点是具有自主性和相互协作性,能作用于 自身和环境,并可以和其它 agent 通信。多 agent 系统(mas:multi-agent system)是指由一 些自主的 agent 组成,通过协作来完成某些任务或实现某些目标的分布式计算系统。 2.1.1 agent 技术与特征 agent 最早出现在人工智能(ai)领域。由于分布并行处理技术、面向对象技术、多媒体技 术、计算机网络技术,特别是 internet 和 web 技术的发展,agent 已经成为 ai 和计算机领域最 活跃的研究内容之一。 agent 的原意是“代理” ,即一个人代表另一个人或另一个组织去完成某件(些)事情;在 计算机领域,agent 可以认为是被授权的“个人软件助理” ,是一种在分布系统或者协作系统中 能持续自主地发挥作用的计算实体,常简称为智能体5。其最大特点是具有一定的智能性及良 好的灵活性和分布性。特别适合对复杂、协同和难以预测的问题进行处理。 到目前为止,对 agent 尚没有一个统一和权威的定义。不同的研究学者提出了不同的观点。 stan franklin 对 agent 的定义是这样的: agent 是位于某一特定环境中并且其自身是该环境的组 成部分之一的一种实体系统,它能够感知环境的变化并通过相应的行为作用于环境以达到其自 身的目的,而且,它能够感知这种作用所带来的环境改变6。m.coen 认为:agent 是可以进行 基于并行处理技术的航班计划编排系统设计 4 对话、协商的软件7。p.maes 认为:agent 是复杂动态环境中能自治地感知环境并能自治地通 过动作作用于环境,从而实现其被赋予的任务或目标的计算系统。 但其基本思想是“使软件实体能够模拟人类的社会行为和社会观,即人类社会的组织形式、 协作关系、进化机制以及认知、思维和解决问题的方式” 。agent 技术区别于传统技术的主要特 征是其一般具有自主性、交互性、反应性、主动性和适应性等特征8。 (1)自主性 agent 具有属于其自身的计算资源和局部于自身行为控制的机制。能在无外界 直接操纵的情况下,根据其内部状态和感知到的外部环境信息,决定和控制自身的行为。 (2)交互性能与其他 agent 进行多种形式的交互,能有效地与其他 agent 协同工作。 (3)反应性能感知所处的环境,并对相关事件做出适时反应9。 (4)主动性能遵循承诺采取主动行动,表现出面向目标的行为。 (5)适应性 agent 可以适应环境的变化。 2.1.2 agent 组成结构 根据不同的分类方法, agent 可分为不同的种类: 根据 agent 的可移动性, 可分为静态 agent 和移动 agent;根据 agent 的思维方式,可分为反应型 agent、慎思型 agent 以及混合型 agent; 根据 agent 的功能,可分为协作 agent、交互 agent、信息 agent 和娱乐 agent10。但是无论属 于哪一类 agent,agent 的基本功能是相似的,即所有的 agent 都具有基本相同的结构,根据具 体运用对象加上某些特有的功能模块可以成为不同种类的 agent。 在多agent系统中其基础仍是每个独立的agent, 因此有必要了解文中所用到的agent结构。 本文采用了一个如图 2.1 所示的具有“即插即用”特点的 agent 的结构11。它由两部分所组成: agent 核以及功能模块,其主要的功能组件如下: 图 2.1 agent 结构 南京航空航天大学硕士学位论文 5 (1)感知器。负责处理 agent 与其它 agent 间的通信,以及对外界环境的监控,并存储感 知的信息。 (2)消息处理器。处理从感知器中获得的信息,并将这些信息按优先级排序及送到协调引 擎中。 (3)协调引擎。根据 agent 的目标做出决策,并将最后所接受的任务信息传递到计划/规划 器当中。同时它也负责利用相应的协调协议和策略与其它的 agent 相互协调。 (4)计划/规划器。负责 agent 需完成任务的计划与调度。 (5)黑板及功能模块。为功能模块的执行提供了一个信息、数据以及知识的公共交换区。 2.1.3 多 agent 系统 大型、复杂现实问题的处理已超出了单 agent 的能力。一个 agent 的能力受其能力、资源 及其与其它 agent 相互关系的限制,不能单独完成复杂问题的求解。由此多 agent 系统应运而 生,而且多个 agent 之间的并行执行使得问题的解决效率大大提高。 多 agent 系统由多个 agent 组成。每个 agent 代表一个物理的或抽象的实体13。相互之间 既是独立自主的,能作用于自身和环境及能对环境的变化做出反应,也能进行交互,相互配合 完成共同任务 (若干 agent 共同承担的任务称之为共同任务) 。 这样的系统能够模拟人类社会团 体、大型组织机构的群体工作,并运用它们解决问题的工作方式,解决共同关心的复杂问题。 多 agent 系统具有如下一些特点: (1) 各 agent 主体分布于地理位置不同的多个处理器上, 系统中的各个主体可能是异质的, 即主体可能在不同的软、硬件平台上采用不同的程序设计语言或技术实现。 (2)主体拥有一定计算资源,能够独立地进行问题求解和决策的大粒度的计算实体,如专 家系统、占有进程资源的功能模块、智能系统等。 (3)系统中各主体的问题求解能力是有限的,全局目标的完成必须由多个主体相互协调实 现,并且主体之间是非对抗的。 (4)系统中各主体并非计算、异步通信,且通信是安全的,并满足传递序法则。 (5)系统作为一个整体连续操作且有可靠性。 由于多 agent 系统放松了对集中式和顺序控制的限制,提出了分散控制和并行处理,并且 多 agent 系统可以降低软件或硬件的费用,提供更快速的问题求解,其优点包括: (1)通过协作可以解决单个 agent 不能解决的问题,所以具有强有力的问题求解能力14。 (2)快速求解,由于并行求解,所以求解效率较高。 (3)鲁棒性,由于求解时有多个 agent 参与,功能上常常有冗余,所以单个 agent 失效时, 其所承担的问题求解任务可由其它 agent 代替,可靠性较好15。 (4)灵活性,即可单独工作又可协同工作,具有较好的灵活性。 基于并行处理技术的航班计划编排系统设计 6 (5)模块化,每个 agent 都是一个独立的实体,通过标准的通信语言和合作协议进行交互 与合作。彼此之间没有控制和从属关系16。 (6)扩展性好,每个 agent 作为一个实体,可以动态地加入到已有的 mas 中,为系统带 来新的问题求解能力,同时,在其任务完成后还可以动态地退出系统,从而带来灵活的扩展性。 2.1.4 多 agent 通信策略 就通信内容来讲,agent 通信实质上就是信息的传递17。根据 agent 获取信息的途径,在多 agent 系统的通信策略中可分别设计出四种不同的通信方式:即查询方式(query mode) 、预订 方式(order mode) 、传递方式(transfer mode)和中介方式(middleman mode)18。在查询 和预订方式中,选择一个称为黑板的公开信息库,即把信息放在可广泛存取的“黑板”上,实 现广播通信。黑板作为一个共享的知识结构,agent 可以向它张贴信息,也可以从其上读取其 它 agent 张贴的信息19。 (1)查询,就是 agent 直接到系统或组织的公开信息库中查询感兴趣的信息,这是一种主 动行为。 (2)预订,即 agent 向系统或组织中专门负责预订的 agent 预订自己感兴趣的信息,这种 信息在预订当时可能存在,也可能根本不存在。一旦公开信息库中有相应信息存在的时候,该 预订管理 agent 就会将信息发给预订者。这种方式中的 agent 是被动的(当然,其之前的预订 行为是主动的) 。 (3)传递,指 agent 直接找到信息所有者,请求其向它提供信息。这是一种信息需求者与 信息提供者之间的交互行为。双方可以直接进行通信,也可以把信息放在一个第三方的位置进 行通信。 (4)中介,则是指向专门的中介 agent 发出求助请求,由中介 agent 帮助该 agent 找到相 应的信息或信息提供者。 本文在设计航班计划编辑模块时,记录编辑轨迹信息 agent 与航班规则检查 agent 之间, 以及航班规则检查 agent 与错误提示 agent 之间需要快速实时的数据通信,因此选择信息传递 方式20。因此,本文重点研究了 agent 之间的传递通信方式。 采用传递方式的前提条件是:agent_a 已经知道了 agent_b 的地址信息。agent_a 向 agent_b 发出询问,在询问的同时,agent_a 还应告知对方自己希望采用的回复方式以及相应 的回复地址。 回复方式有两种: 直接回复方式 (direct back) 如图2.2所示和间接回复方式 (indirect back)如图 2.3 所示。前者的回复地址是 agent_a 本身的地址,后者的回复地址是一个第三方 地址。 在直接回复方式中,agent_a 发一询问到 agent_b 并等待回答,agent_b 将回答直接回复 给 agent_a。 南京航空航天大学硕士学位论文 7 agent_aagent_b requst reply或reject 图 2.2 直接回复方式 而在间接回复方式中,agent_a 发一查询到 agent_b 并等待回答,agent_b 将回答放到第 三方地址处,然后 agent_a 再去该地址取走回答。 agent_aagent_b requst reply或reject draw put(reply或 reject) 图 2.3 间接回复方式 从图 2.2 和图 2.3 可以看出: agent_a 并不知道 agent_b 的回答将于什么时候到达第三方地 址,因而,它须每隔一段时间去该地址查看,直至回答到来;agent_b 除提供回答外,应提供 足够多的匹配信息,以使 agent_a 能进行匹配,找到该回答。 两种回复方式相比较,前者的优点是实时性比较高,其最小通信时间为:线路上的延迟和 agent_b 的延迟之和;后者的最小通信时间为:线路上的延迟、agent_b 的延迟以及 agent_a 本身的耽搁之和。因为本文设计的航班编辑过程对实时性要求较高,所以 agent 之间的获取信 息方式都采用了直接回复方式。而管理 agent 与业务 agent 之间的通信实时性不高,可以选择 查询与预订方式。 2.2 多线程技术 2.2.1 多线程技术与特征 所谓线程(或称线索,thread),是程序中的以单一的顺序控制流。线程按顺序执行,即在一 个线程中,一个时刻只能由一个执行点21。显然,按传统方法设计的程序,无论是单道执行的 程序,还是由多个进程并发执行的多道程序,就每个程序本身而言,都是由单线程组成的。 多线程程序设计,就是使单个程序中包含并发执行的多个线程。当多线程程序执行时,在 该程序对应的进程中就有多个控制流在同时运行,即具有并发执行的多个线程22。在一个进程 中包含并发执行的多个控制流,而不是把多个控制流一一分散在多个进程中,这是多线程程序 设计与并发多进程方式程序设计截然不同之处。这就决定了二者之间虽然在概念上有许多相通 之处,但实现方法完全不同。 基于并行处理技术的航班计划编排系统设计 8 把一个任务按两个并发进程和两个并发线程分解, 进程之间的关系比较疏远, 各个进程是在 自己独有的地址空间内执行,不但寄存器和堆栈是独有的,动态数据堆、静态数据区和程序代 码也相互独立,而线程之间的关系则要紧密的多23。虽然各线程为保持自己的控制流而独有寄 存器和堆栈,但由于各线程从属于同一进程,它们共享同一地址空间,所以动态堆、静态数据 区及程序代码则是各线程共有的,线程与进程的关系如图 2.4 所示。许多多任务操作系统限制 用户能拥有的最多的进程数目,如很多 unix 版本的典型值为 20 个左右,这对许多并发应用来 说远远不够。而对多线程技术来说,不存在这样的数目限额24。 多线程是为了使得多个线程并行工作以完成多项任务,以提高系统的效率。采用多线程技 术具有如下优点: (1)多线程可以把占据长时间的程序中的任务放到后台去处理; (2)用户界面可以更加吸引人,在进行长时间计算或数据读取时,可弹出一个进度条窗口 显示处理的进度; (3)多线程可以让同一个程序的不同部分并发执行,加快复杂系统的运行速度。 进程 存储器 动态堆 静态数据 程序代码 线程1线程2 寄存器寄存器 堆栈堆栈 图 2.4 线程与进程关系图 2.2.2 线程的创建与控制 线程是系统调度的基本单位, 是 cpu 的一条执行路径。 一个应用程序实例至少有一个线程, 即程序的基本线程或主线程25。用户可以根据需要同时创建若干个线程,让一个程序在同一时 刻运行多个线程。 线程之间独立运行, 每个线程都轮流占用 cpu 的运行时间和资源, 即将 cpu 的时间分片,每一个时间片给不同的线程使用,这样操作系统将不断的将线程挂起、唤醒、再 挂起、再唤醒,直至完成整个任务。线程生命周期如图 2.5 所示。 当程序在运行时,线程被加载到内存中等待执行。每个线程都可能包含该应用程序的数据、 代码或者其他操作系统的资源26。一个线程执行程序的一部分,所有线程都能够访问进程的全 局变量。一个采用多线程的应用程序允许同一程序的多个部分同时执行,为程序赋予了并行特 性,因而可以执行某些实时性或随机性很强的操作,提高对 cpu 的利用率,加快信息处理速 南京航空航天大学硕士学位论文 9 度27。本文在航班图形显示与编辑过程中,设计了并行执行的数据处理与显示线程使得航班图 形显示的速度有了很大提高。 start() new() notify() notifyall() 阻塞状态 运行状态死亡状态新状态 sleep() 睡眠时间到 等待 i/o 完 成 wait() 对象锁定 锁释放 图 2.5 线程生命周期 在多线程程序中,子线程是由应用程序的主线程(通常进程中第一个创建的执行线程被称 为主线程,其后创建的线程称为子线程)调用 createthread 函数创建,操作系统(os)将子线 程句柄返回主线程,此时主线程与它的子线程之间开始并行执行。其执行关系如图 2.6 所示。 调用 createthread 返回线程handle 主线程 主线程继续执行 下面的代码 os(windows) 根据调用参数,创建一个线程,并 分配相应大小的堆栈 ,将从指定地 址处开始的代码放入线程中执行。 从这里开始并发执行 销毁线程,回收堆栈空间 子线程 从lpstartaddress开始 执行线程代码 ,执行 完成后返回os 图 2.6 线程并发执行分析图 下面分别介绍线程的创建、挂起、恢复和终止函数的功能及其特征。 (1)线程的创建 在 delphi 开发环境中,可以通过调用 windows api 来创建线程,就是在主线程中调用 createthread 的 api 函数来实现线程的创建28;还可以从 tthread 派生一个自己的线程类(因 为 tthread 是一个抽象类,不能生成实例) ,然后是覆盖(override)抽象方法:execute(线程 函数, 也就是在线程中执行的代码部分) , 如果需要用到可视 vcl 对象, 还需要通过 synchronize 过程进行。 正常退出 异常退出 i/o 基于并行处理技术的航班计划编排系统设计 10 (2)线程的挂起和恢复 当线程被挂起时,cpu 不分配时间片给该线程,线程停止在挂起命令发出时的代码处,直 到被允许继续进行29。若要挂起线程只要调用线程的 suspend 方法,或者设置线程对象的 suspended 为 true。若要唤醒线程,则只要调用线程的 resume 方法,或者设置线程对象的 suspended 为 false 即可。一个线程可以被挂起多次,当需要唤醒该线程时,需要对该线程调用 多次 resume 方法。 (3)线程的终止 若线程 execute 函数中设置 freeonterminate 为 true,则当线程从 execute 函数退出时,线 程终止,触发 onterminate 事件,从而清除线程对象。也可以在线程运行过程中,由其他线程 控制该线程的退出,这时需要调用线程对象的 terminate 方法,并设置该线程对象的 terminate 属性为 true。 2.2.3 线程同步策略 线程同步,一是指两个以上线程基于某个条件来协调它们的活动。一个线程的执行依赖于 另一个协作线程的消息或信号, 当一个线程没有得到来自另一个线程的消息或信号时则需等待, 直到消息或信号到达才被唤醒30。例如,一个线程依赖于另一个线程运行过程中设置的数据来 决定执行流程。这时就要保证前一个线程在读取决定流程的数据时,后一个线程已完成了对数 据的设置。二是对资源的互斥使用。当多个线程要使用同一个共享资源时,任何时刻最多允许 一个线程去使用,其它要使用该资源的线程必须等待,直到占有资源的线程释放该资源。例如 两个线程都会设置同一个全局变量,那么就要避免两个线程同时写入该变量的情况。所以,如 果必须以特定顺序执行任务,使用同步技术可以显式控制代码运行的顺序;使用同步技术可以 避免当多个线程共享同一资源时可能发生的问题。线程间同步机制有以下四种,如图 2.7 所示: 线程同步 信号灯 对象 临界区 对象 事件对象 互斥体 对象 图 2.7 线程同步方式 (1)使用事件( event objects)对象保持线程同步 当程序中一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年科四考试试题题库及答案
- 慢性粒细胞白血病课件
- 心理演讲素材考试题及答案
- 钦州历史中考试卷及答案
- 管理运营岗位考试题及答案
- 情感障碍护理课件
- 中专外科护理考试题及答案
- 恐龙的时间课件
- 考幼师证考试试题及答案
- 治疗师操作考试题及答案
- 《室内空间设计》第三章课件
- 沥青及沥青混合料试验作业指导书
- 学习《北方民族大学学生违纪处分规定(修订)》课件
- 装配式建筑设计专篇(word6)
- Matlab-Simulink模型检查验证与测试
- 单位减少存档人员表
- 潮流玩具行业研究报告
- 高一新生入学家长会课件(PPT 23页)
- 导尿管球囊扩张术在吞咽障碍治疗中应用
- 四川省初中毕业生登记表
- (精心整理)学而思小学语文课程体系介绍
评论
0/150
提交评论