原 文 :

作 者 :
译 者 : 许 式 伟 朱 照 远
没 人 可 以 预 言 未 来 , 但 我 却 打 算 做 一 些 有 依 据 的 推 测 。
让 我 们 假 设 是 正 确 的 , 而 且 项 目 会 获 得 成 功 。 如 果 是 这 样 , 那 么 核 的 处 理 器 在
年 就 将 会 出 现 在 市 场 上 。
这 毫 不 奇 怪 , 已 经 制 造 出 了 , 它 拥 有 个 核 , 每 个 核 运 行 个 超 线 程 ( 这 相 当 于
个 核 ) 。
这 是 一 个 令 程 序 员 欢 呼 雀 跃 的 进 展 。 为 此 , 他 们 已 经 等 待 了 年 , 现 在 , 是 获 得 回 报
的 时 候 了 。
对 于 程 序 员 来 说 , 好 消 息 是 :
你 的

程 序 在

核 的 处 理 器 上 运 行 将 快

倍 。
这 是 真 的 吗 ?
差 不 多 吧 。 尽 管 为 时 尚 早 , 但 我 们 仍 很 乐 观 ( 相 当 地 乐 观 , 在 过 去 的 年 里 , 我 从 来 没 见 过
如 此 的 乐 观 ! ) 。
有 时 我 们 需 要 对 我 们 的 程 序 作 点 小 调 整 ― ― 当 我 在 一 台 机 器 ( 拥 有 相 当 于 个
核 ) 上 生 成 文 档 时 , 我 把 我 的 程 序 改 了 一 行 ( 我 把 一 个 换 成 了 ― ― 不 好 意
思 , 我 在 这 里 提 一 点 技 术 细 节 , 只 是 “ 并 行 的 ” ) 而 已 ) 。
这 个 程 序 ( 它 根 据 标 记 生 成 篇 文 档 ) 的 运 行 速 度 提 高 了 倍 。 不 是 倍 , 这 一 点 我
承 认 , 但 是 已 经 显 著 的 加 快 了 。 ( 后 来 的 工 作 使 我 们 意 识 到 我 们 是 在 写 盘 时 遇 到 了 瓶 颈 ,
所 以 除 非 能 够 让 磁 盘 的 也 并 行 了 , 否 则 我 们 会 停 留 在 这 个 倍 上
在 , 这 个 我 工 作 和 被 开 发 出 来 的 地 方 , 我 们 正 在 把 一 些 应 用 程 序 移 植 到 核 处
理 器 上 ― ― 你 猜 怎 么 着 ? 在 作 了 一 些 小 调 整 后 , 它 们 运 行 几 乎 都 快 了 倍 。 呵 呵 , 对 在
实 验 中 的 个 核 的 处 理 器 , 我 们 有 点 等 不 及 了 …
为 什 么 我 们 的 程 序 运 行 得 更 快 了 ? 这 全 跟 可 变 状 态 ( ) 和 并 发 ( ) 有
关 。
可 变 状 态 和 并 发
回 首 过 去 ( 多 年 以 前 ) , 有 两 种 并 发 模 型 :
 共 享 状 态 并 发 ( )
 消 息 传 递 并 发 ( )
现 在 , 整 个 世 界 都 走 了 一 条 路 线 ( 朝 着 共 享 状 态 的 方 向 ) , 而 我 们 选 择 了 另 一 条 。
几 乎 没 有 语 言 沿 “ 消 息 传 递 并 发 之 路 ” 而 行 , 例 外 的 则 有 和 。
在 消 息 传 递 并 发 模 型 中 , 我 们 宣 称 其 中 没 有 共 享 状 态 。 所 有 的 计 算 都 在 进 程 中 完 成 , 并 且 交 换
数 据 的 唯 一 途 径 是 通 过 异 步 消 息 传 递 。
那 为 什 么 这 是 有 益 的 呢 ?
共 享 状 态 并 发 模 型 被 “ 可 变 状 态 ” ( 顾 名 思 义 就 是 可 被 修 改 的 内 存 ) 的 思 想 所 拖 累 。 所 有 像
, , 等 等 的 语 言 , 都 认 为 有 一 种 东 西 叫 “ 内 存 ” , 我 们 可 以 去 修 改 它 。
只 要 你 仅 有 一 个 进 程 对 内 存 进 行 修 改 , 那 它 就 没 什 么 问 题 。 但 是 如 果 你 有 多 个 进 程 共 享 并 且 修
改 同 一 内 存 的 话 , 则 后 患 无 穷 ― ― 这 是 很 愚 蠢 的 。
为 了 防 止 对 共 享 内 存 的 同 时 修 改 , 我 们 需 要 一 种 锁 机 制 。 你 称 它 为 互 斥 体 ( ) 也 好 , 同
步 方 法 ( ) 也 好 , 或 者 其 他 你 愿 意 的 名 字 , 它 仍 然 是 锁 。
如 果 程 序 在 临 界 区 ( 即 当 它 们 持 有 锁 的 时 候 ) 崩 溃 , 灾 难 就 来 了 。 所 有 其 他 的 程 序 都 将 不 知 所
措 。
程 序 员 怎 么 修 正 这 些 问 题 呢 ? 他 们 不 修 正 。 他 们 只 有 祈 祷 。 在 单 核 处 理 器 上 , 他 们 的 程 序 或 许
还 可 以 工 作 , 但 是 在 多 核 上 ― ― 灾 难 。
有 各 种 各 样 解 决 这 个 问 题 的 方 案 ( 事 务 型 内 存 ( ) 可 能 是 最 好 的 ) 。 但
是 , 最 好 的 情 况 下 , 它 们 也 仅 仅 是 “ 杂 烩 ” , 最 坏 情 况 下 , 它 们 就 是 噩 梦 。


没 有 可 变 的 数 据 结 构
( 虽 然 不 是 百 分 百 的 准 确 , 但 也 足 够 准 确 了 )
没 有 可 变 的 数 据 结 构 没 有 锁
没 有 可 变 的 数 据 结 构 容 易 并 行 化
我 们 如 何 做 并 行 呢 ? 很 简 单 , 程 序 员 将 问 题 的 解 决 方 案 分 解 成 许 多 并 行 的 进 程 。
这 种 编 程 风 格 有 它 自 己 的 术 语 ― ― 它 叫
面 向 并 发 编 程 (






并 不 是 面 向 对 象 的 ― ― 它 有 它 自 己 的 表 示 方 法 。
对 象 下 台 , 并 发 上 场 。
世 界 是 并 发 、 并 行 的 , 同 一 时 刻 发 生 着 很 多 事 情 。 如 果 我 没 有 很 直 觉 地 理 解 并 发 的 思 想 , 那
么 我 不 可 能 在 公 路 上 开 车 。 我 们 一 直 在 进 行 着 纯 粹 的 消 息 传 递 并 发 。
想 象 有 一 群 人 , 他 们 没 有 共 享 的 状 态 。
我 有 我 的 私 有 的 记 忆 ( 在 我 的 脑 海 里 面 ) , 你 有 你 的 , 二 者 并 不 共 有 。 我 们 通 过 传 递 信 息 的 方
式 ( 声 波 和 光 波 ) 进 行 交 流 。 基 于 这 些 信 息 的 接 收 , 我 们 更 新 我 们 的 私 有 状 态 。
简 而 言 之 , 这 就 是 面 向 并 发 编 程 。
就 把 可 变 状 态 隐 藏 在 对 象 里 面 ( 译 者 按 : 这 是 面 向 对 象 的 核 心 理 念 之 一 ― ― 封 装 变 化 ) 而 言 :
正 是 这 个 特 性 使 得 并 行 成 为 一 个 几 乎 不 可 能 解 决 的 难 题 。
它 有 效 吗 ?
是 的 。 在 那 些 对 可 靠 性 很 看 重 的 高 科 技 项 目 中 被 广 泛 使 用 着 。 的 旗 舰 项 目 ( 由
瑞 典 电 信 公 司 创 立 ) 是 , 它 有 超 过 百 万 行 的 代 码 。
已 经 获 得 了 九 个 的 可 靠 性 ( 是 的 , 你 读 的 没 错 , ) 。 让 我 们 把 它 放 到
这 样 的 背 景 : 五 个 已 经 被 认 为 是 优 秀 了 ( 宕 机 时 间 分 钟 年 ) , 七 个 几 乎 就 达 不 到 …
但 是 我 们 做 到 了 九 个 。
为 什 么 呢 ? 因 为 没 有 共 享 状 态 , 加 上 还 有 一 个 精 妙 的 错 误 恢 复 模 型 。 你 可 以 在 我 的 博 士 论 文
中 了 解 全 部 的 细 节 。
谁 在 使 用

 “ 了 解 内 幕 ” 的 人 们
 初 创 企 业

 一 个 建 模 程 序
 一 个 即 时 消 息 服 务 器 ( )
 一 个 多 协 议 分 布 的 负 载 测 试 工 具
 一 个 性 能 非 常 高 的 服 务 器
 数 以 千 计 的 ( “ 我 希 望 我 可 以 在 上 班 时 间 做 这 个 ” ) 的 爱 好 者


难 吗 ?
不 ― ― 不 过 它 有 点 与 众 不 同 。
没 有 “ 一 种 类 似 于 的 语 法 以 使 之 容 易 被 学 习 ” , 它 既 不 是 “ 面 向 对 象 的 ” , 也 没 有
“ 可 变 状 态 ” , 它 是 一 门 “ 函 数 式 编 程 语 言 ( ) ” 。
这 就 是 所 有 让 人 感 到 害 怕 ― ― 并 让 新 的 使 用 者 望 而 却 步 的 东 西 。 然 而 有 意 思 的 是 , 其
实 是 一 门 非 常 小 而 且 简 单 的 语 言 。
可 能 你 正 在 对 代 码 看 上 去 的 样 子 感 到 迷 惑 不 解 。 大 量 使 用 了 模 式 匹 配 语 法 ; 这
里 有 一 个 代 码 的 小 例 子 ( 摘 自 新 版 的 一 书 ) :





现 在 , 让 我 们 在 中 编 译 并 运 行 它 :






相 当 的 简 单 … 以 下 是 做 类 似 事 情 的 代 码 :

我 从 哪 里 下 载


你 可 以 从 处 下 载 。
我 如 何 进 一 步 了 解


哦 , 我 刚 写 完 了
一 书 。
这 是 一 本 的 教 程 导 引 。 它 覆 盖 了 整 个 语 言 , 并 且 包 含 了 许 多 演 示 程 序 及 其 完 整 的 源 代
码 , 其 中 包 括 :
 一 个 类 似 的 系 统
 一 个 流 媒 体 服 务 器
 一 个 用 来 构 建 全 文 检 索 系 统 的 实 现
博 客
在 博 客 圈 子 里 面 气 氛 非 常 活 跃 , 你 可 以 访 问 搜 索 引 擎 搜 索 博 客 。 此 外 , 这 里 还
有 一 些 你 可 能 喜 欢 的 文 章 :



网 络 文 档
现 在 去 看 看 这 个 目 录 吧 。 你 将 在 这 里 找 到 多 个 文 件 。 我 已 经 为 你 挑 选 了 其 中 的 一 些 ,
以 供 你 查 阅 :













它 们 中 的 每 一 个 都 代 表 了 一 本 有 待 编 纂 的 书
祝 你 阅 读 愉 快 !
版 权 所 有

Sign up to vote on this title
UsefulNot useful