正在加载图片...
Vol.19 No.5 王成耀等:Windows NT环境下基于多线程的面向对象应用系统设计 ·487· Lock信号量对象m pSemaThread; 创建并启动相应的线程函数; } 2.3应用 (I)在INI文件中定义线程数最大值以及对DB的互斥对象名等,如 [THREADS]MAX THREAD NUM=5 MUTEX NAME FOR DB DATABASE (2)将任务分类,构造任务表pTaskTable. (3)构造CMultiThrdad对象,如 CMultiThread the MultiThread(pTaskTable); (4)定义并实现相应的任务处理函数, UINT TaskProc1(LPVOID pParam) ∥任务处理 the MultiThread.ThreadUnlock() return 0; 若任务处理函数涉及对DB的写操作,则在每个事务(transaction)开始前及结束后,分别 调用theMultiThread..DBLock()与theMultiThread.DBUnlock()函数. (5)在进程初始化部分,调用the MultiThread.InitThread(). (6)当进程的主线程收到任务处理消息时,以数据起始地址及长度为参数调用 theMultiThread.StartThread(),动态创建并启动相应线程. 3多进程启停的同步 在多进程应用系统中,各进程之间因协作完成一项任务和对资源的共享,不可能彼此完 全独立地运行,存在着相互依赖和相互制约的关系,这些具有伙伴关系的进程在执行次序上 必须遵循某种确定的规律.就好象工业生产中的流水作业,每一道工序都有自己的特定任 务,它们协同作业才能完成产品的生产,在前一道工序未完成或加工质量不合格时,后一道工 序就不能进行不去,多个进程启停时,亦是如此,即一个进程的启(停)必须在另一进程或另几 个进程到达特定启(停)状态时才能继续,因此,提出面向对象的分步启停方法, 3.1设计思想 采用分步启停,将每个进程的启停分为若干步,如N1个启步,2个停步,每步对应一种 状态,取值为: READY:就绪态,即完成初始化, STARTUP+i(O≤i<NI):启态i,即完成第i个启步.王 成耀等 环境 下 基于 多线程 的 面 向对象应用 系 统设计 信号量 对象 创建 并 启 动相 应 的线程 函数 应 用 在 文件 中定 义线 程数最大值 以 及 对 的互 斥 对象名等 , 如 」 」 将任务分类 , 构造 任务表 构造 对象 , 如 定 义 并 实 现相应 的任务处理 函数 刀 任务处理 若任务处理 函 数涉及 对 的写操作 , 则在 每个 事务 咖 开始 前及 结 束后 , 分 别 调用 与 五 函 数 在进程初始化部分 , 调 用 当 进 程 的 主 线 程 收 到 任 务 处 理 消 息 时 , 以 数 据 起 始 地 址 及 长 度 为 参 数 调 用 七 七 , 动态创建并启 动相 应 线程 多进程启停 的同步 在 多 进 程 应 用 系 统 中 , 各进 程 之 间 因协作完 成 一 项 任务 和 对 资源 的共 享 , 不 可 能 彼 此 完 全独 立 地 运 行 , 存在 着 相 互 依 赖和 相 互 制 约 的关 系 , 这 些 具 有 伙 伴 关 系 的进 程 在 执 行 次序 上 必 须 遵 循 某 种 确 定 的规 律 就 好 象 工 业 生 产 中 的 流 水作 业 , 每 一 道 工 序 都有 自己 的特 定 任 务 , 它们协 同作 业才能完成产 品的生 产 , 在前 一道 工 序未 完 成 或加 工 质 量 不 合格 时 , 后 一 道 工 序就不 能进 行不 去 多 个进程 启停 时 , 亦是 如此 , 即一 个进程 的启 停 必须 在另 一 进程 或另几 个进程 到 达特定启 停 状 态 时才 能继续 , 因此 , 提 出面 向对象 的分步启停 方法 设计 思想 采 用 分步 启停 , 将 每个 进 程 的启停 分 为 若 干步 , 如 个 启 步 , 个停 步 , 每 步 对应 一 种 状 态 , 取值 为 就绪态 , 即完成初 始化 夕 启态 , 即完成 第 个启步
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有