13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

第 十 七 章 线 程并 行 编 程 要 比 看 上 去 要 难 得 多 。 假 设 我 们 从 一 个 烹 饪 书 拿 出 一 条 菜 谱 , 然 后 把 它 转 换成 某 种 几 十 个 厨 师 可 以 同 时 工 作 的 东 西 。 那 么 你 有 两 个 实 现 方 法 。一 个 方 法 是 给 每 个 厨 师 一 个 专 用 的 厨 房 , 给 它 装 备 原 料 和 器 具 。 对 于 那 些 可 以 很 容 易 分 解 的菜 谱 , 以 及 那 些 可 以 很 容 易 从 一 个 厨 房 转 到 另 外 一 个 厨 房 的 食 物 而 言 , 这 个 方 法 很 好 用 , 因为 它 把 不 同 厨 师 分 隔 开 , 互 不 影 响 。另 外 , 你 也 可 以 把 所 有 厨 师 都 放 在 一 个 厨 房 里 , 然 后 让 他 们 把 菜 烧 出 来 , 让 他 们 混 合 使 用 那些 东 西 。 这 样 可 能 会 很 乱 , 尤 其 是 切 肉 机 开 始 飞 转 的 时 候 。这 两 个 方 法 对 应 计 算 机 的 两 种 并 行 编 程 方 法 。 第 一 种 是 Unix 系 统 里 典 型 的 多 进 程 模 型 ,这 种 模 型 里 每 个 控 制 线 索 都 有 自 己 的 一 套 资 源 , 我 们 把 它 们 放 在 一 起 叫 进 程 。 第 二 种 模 型 是多 线 程 模 型 , 这 种 模 型 里 每 个 控 制 线 索 和 其 他 控 制 线 索 共 享 资 源 。 或 者 有 些 场 合 可 能 ( 或 者必 须 ) 不 共 享 ( 资 源 )。我 们 都 知 道 厨 师 喜 欢 掌 勺 ; 这 一 点 我 们 明 白 , 因 为 只 有 让 厨 师 掌 好 勺 才 能 实 现 我 们 想 让 他 们干 的 事 。 但 是 厨 师 也 需 要 有 组 织 , 不 管 用 什 么 方 法 。<strong>Perl</strong> 支 持 上 面 两 种 模 式 的 组 织 形 式 。 本 章 我 们 将 把 它 们 称 为 进 程 模 型 和 线 程 模 型 。17.1 进 程 模 型我 们 不 会 在 这 里 太 多 地 讨 论 进 程 模 型 , 原 因 很 简 单 : 它 遍 及 本 书 的 所 有 其 他 部 分 。<strong>Perl</strong> 起源 于 Unix 系 统 , 所 以 它 浸 满 了 每 个 进 程 处 理 自 己 的 事 情 的 概 念 。 如 果 一 个 进 程 想 并 行 处理 某 些 事 情 , 那 么 逻 辑 上 它 必 须 启 动 一 个 并 行 的 进 程 ; 也 就 是 说 , 它 必 须 分 裂 一 个 重 量 级 的新 进 程 , 它 和 父 进 程 共 享 很 少 东 西 , 除 了 一 些 文 件 描 述 符 以 外 。( 有 时 候 看 起 来 父 进 程 和 子进 程 共 享 很 多 东 西 , 但 大 多 数 都 只 是 在 子 进 程 中 复 制 父 进 程 并 且 在 逻 辑 概 念 上 并 没 有 真 正 共享 什 么 东 西 。 操 作 系 统 为 了 偷 懒 也 会 强 制 那 种 逻 辑 分 离 的 , 这 种 情 况 下 我 们 叫 它 写 时 拷 贝(copy-on-write) 语 意 , 但 是 如 果 我 们 不 首 先 逻 辑 上 分 开 , 我 们 实 际 上 就 根 本 不 能 做 拷 贝 。)由 于 历 史 原 因 , 这 种 工 业 级 的 多 进 程 观 点 在 Microsoft 系 统 上 引 起 一 些 问 题 , 因 为Windows 没 有 完 善 的 多 进 程 模 型 ( 并 且 老 实 说 , 它 并 不 常 依 靠 并 发 编 程 技 术 )。 而 且 它 通常 采 用 一 种 多 线 程 的 方 法 。453

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!